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