source: server/bin/setclientlive

qndtest
Last change on this file was 81b2ea1, checked in by Ramón M. Gómez <ramongomez@…>, 4 years ago

#957 #958: setclientlive and setclientmode script are adapted to global functions and avoid SQL injectionn.

  • Property mode set to 100755
File size: 2.1 KB
RevLine 
[5d28f39]1#!/bin/bash
2
3#/**
4#@file    setclientlive
[81b2ea1]5#@brief   Asignar un cliente de inicio ogLive a un ordenador o a un aula
6#@usage   setclientlive { DirOGLive | IndiceOGLive } Ambito
7#@param   DirOGLive      subdirectorio del cliente ogLive ("default" para definido por defecto)
8#@param   IndiceOGLive   nº de índice de cliente ogLive (según script "oglivecli")
9#@param   Ámbito         nombre de ordenador o nombre de aula
[5d28f39]10#warning  No se admiten cambios temporales.
11#@version 1.1.0 - Versión inicial basada en script "setclientmode".
12#@author  Ramón M. Gómez - Univ. Sevilla, junio 2017
13#*/ ##
14
15
[81b2ea1]16# Variables y funciones globales.
17PROG="$(basename "$0")"
[5d28f39]18OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"}
[81b2ea1]19PATH=$PATH:$OPENGNSYS/bin
[5d28f39]20SERVERCONF=$OPENGNSYS/etc/ogAdmServer.cfg
21TFTPDIR=$OPENGNSYS/tftpboot
22LOGFILE=$OPENGNSYS/log/opengnsys.log
[81b2ea1]23
24source $OPENGNSYS/lib/ogfunctions.sh || exit 1
[5d28f39]25
26# Control básico de errores.
[81b2ea1]27[ "$*" == "help" ] && help
28[ "$*" == "version" ] && version
29[ $# -eq 2 ] || raiseError usage
30[ "$USER" != "root" ] && raiseError access "Need to be root"
31source $SERVERCONF 2>/dev/null || raiseError access "Sin acceso a fichero de configuración"
32
[5d28f39]33case "$1" in
[81b2ea1]34    [0-9]*)     DIR=$(oglivecli search $1 2>/dev/null) ;;
35    "default")  DIR="ogLive" ;;
36    *)          if oglivecli search "$1" &>/dev/null; then DIR="$1"; fi ;;
[5d28f39]37esac
[81b2ea1]38[ "$DIR" ] || raiseError notfound "Cliente ogLive \"$1\", listar ejecutando \"oglivecli list\""
39[ -e "$TFTPDIR/$DIR" ] || raiseError notfound "Directorio de ogLive \"$DIR\""
[5d28f39]40
41# Sustituir caracteres ' por \' para evitar inyección SQL.
[81b2ea1]42OGLIVEDIR="${DIR//\'/\\\'}"
43RESOURCE="${2//\'/\\\'}"
[7c841bd]44# Actualizar ogLive asignado al aula.
[81b2ea1]45dbexec "UPDATE aulas SET oglivedir='$OGLIVEDIR' WHERE nombreaula='$RESOURCE';"
[5d28f39]46# Actualizar ogLive para todos los clientes y reasignar plantilla PXE.
47listclientmode "$RESOURCE" | awk -F\" '{print $2,$4}' | \
[7c841bd]48        while read -r PC BOOTMODE; do
[81b2ea1]49            date +"%b %d %T $PROG: Configurando \"$PC\" con cliente \"$OGLIVEDIR\"" | tee -a $LOGFILE
50            dbexec "UPDATE ordenadores SET oglivedir='$OGLIVEDIR' WHERE nombreordenador = '$PC';"
51            setclientmode "$BOOTMODE" "$PC" PERM >/dev/null
52        done
Note: See TracBrowser for help on using the repository browser.