diff options
author | ramon <ramongomez@us.es> | 2017-06-02 10:50:55 +0000 |
---|---|---|
committer | ramon <ramongomez@us.es> | 2017-06-02 10:50:55 +0000 |
commit | 5d28f39e946acc4db676b2c72bfb9b468921cfa7 (patch) | |
tree | 50aaedb24a020b7c4bae86c9d929687afdd7c1d5 /server | |
parent | 2e538275a4ab51ba5c760b5ab1b5410f0ab139a3 (diff) |
#768: Nuevos scripts {{{listclientlive}}} y {{{setclientlive}}} para listar y asignar clientes ogLive.
git-svn-id: https://opengnsys.es/svn/branches/version1.1@5336 a21b9725-9963-47de-94b9-378ad31fedc9
Diffstat (limited to 'server')
-rwxr-xr-x | server/bin/listclientlive | 49 | ||||
-rwxr-xr-x | server/bin/listclientmode | 2 | ||||
-rwxr-xr-x | server/bin/setclientlive | 70 |
3 files changed, 120 insertions, 1 deletions
diff --git a/server/bin/listclientlive b/server/bin/listclientlive new file mode 100755 index 00000000..006f4a5e --- /dev/null +++ b/server/bin/listclientlive @@ -0,0 +1,49 @@ +#!/bin/bash +# listclientlive: Lista la distribución ogLive asociada a los clientes, +# ya sea un equipo o un aula. +# Uso: listclienlive NombrePC | NombreAula +# Autor: Ramón M. Gómez - Univ. Sevilla, junio 2017 + + +# Variables. +PROG=$(basename $0) +OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"} +SERVERCONF=$OPENGNSYS/etc/ogAdmServer.cfg +TFTPDIR=$OPENGNSYS/tftpboot +MYCNF=/tmp/.my.cnf.$$ + +# Control básico de errores. +if [ $# -ne 1 ]; then + echo "$PROG: Error de ejecución" >&2 + echo "Formato: $PROG [NOMBRE_PC|NOMBRE_AULA]" >&2 + exit 1 +fi +if [ ! -r $SERVERCONF ]; then + echo "$PROG: Sin acceso a fichero de configuración" >&2 + exit 2 +fi + +# Obtener datos de acceso a la Base de datos. +source $SERVERCONF +# Sustituir caracteres ' por \' para evitar inyección SQL. +RESOURCE="${1//\'/\'}" +# Componer fichero con credenciales de conexión. +touch $MYCNF +chmod 600 $MYCNF +cat << EOT > $MYCNF +[client] +user=$USUARIO +password=$PASSWORD +EOT +# Borrar el fichero temporal si termina el proceso. +trap "rm -f $MYCNF" 0 1 2 3 6 9 15 +# Obtener nombre de ordenador individual o todos los de una aula e indicar su plantilla asociada. +mysql --defaults-extra-file=$MYCNF -D "$CATALOG" -s -N -e \ + "SELECT nombreordenador, oglivedir FROM ordenadores + JOIN aulas USING (idaula) + WHERE aulas.nombreaula='$RESOURCE' + OR nombreordenador='$RESOURCE';" | \ + while read PC OGLIVE; do + echo "Equipo $PC asociado a cliente \"$OGLIVE\" $([ -e $TFTPDIR/$OGLIVE ] || echo "(inexistente)")" + done + diff --git a/server/bin/listclientmode b/server/bin/listclientmode index 2496a6da..5d02bcee 100755 --- a/server/bin/listclientmode +++ b/server/bin/listclientmode @@ -46,6 +46,6 @@ mysql --defaults-extra-file=$MYCNF -D "$CATALOG" -s -N -e \ WHERE aulas.nombreaula='$RESOURCE' OR nombreordenador='$RESOURCE';" | \ while read PC TMPL; do - echo "Equipo $PC asociado a arranque tipo \"$(head -1 $TMPLDIR/$TMPL |cut -f2 -d" ")\" (fichero $TMPL)" + echo "Equipo \"$PC\" asociado a arranque tipo \"$(head -1 $TMPLDIR/$TMPL |cut -f2 -d" ")\" (fichero $TMPL)" done diff --git a/server/bin/setclientlive b/server/bin/setclientlive new file mode 100755 index 00000000..ea3a7db0 --- /dev/null +++ b/server/bin/setclientlive @@ -0,0 +1,70 @@ +#!/bin/bash + +#/** +# setclientlive DirOGLive | IndiceOGLive { NombrePC | NombreAula } Modo_trabajo +#@file setclientlive +#@brief Configura el archivo de arranque de PXE para asignar el cliente ogLive, ya sea a un equipo o a un aula +#@param $1 DirOGLive, IndiceOGLive o "default" (según script "oglivecli") +#@param $2 Ámbito { NombrePC | NombreAula } +#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. +PROG=$(basename "$0") +PATH=$PATH:$(dirname $(realpath "$0")) +OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"} +SERVERCONF=$OPENGNSYS/etc/ogAdmServer.cfg +TFTPDIR=$OPENGNSYS/tftpboot +LOGFILE=$OPENGNSYS/log/opengnsys.log +MYCNF=/tmp/.my.cnf.$$ + +# Control básico de errores. +if [ $# -ne 2 ]; then + echo "$PROG: Error de ejecución" >&2 + echo "Formato: $PROG {DIR_OGLIVE|INDICE_OGLIVE|default} {NOMBRE_PC|NOMBRE_AULA}" >&2 + exit 1 +fi +if [ ! -r $SERVERCONF ]; then + echo "$PROG: Sin acceso a fichero de configuración" >&2 + exit 2 +fi +case "$1" in + [0-9]*) DIR=$(oglivecli search $1 2>/dev/null) ;; + "default") DIR="ogLive" ;; + *) if oglivecli search "$1" 2>/dev/null; then DIR="$1"; fi ;; +esac +if [ -z "$DIR" ]; then + echo "$PROG: ogLive no ecncontrado, listar ejecutando \"oglivecli list\"" >&2 + exit 1 +fi +if [ ! -e "$TFTPDIR/$DIR" ]; then + echo "$PROG: directorio de ogLive no ecncontrado: \"DIR\"" >&2 + exit 1 +fi + +# Obtener datos de acceso a la Base de datos. +source $SERVERCONF +# Sustituir caracteres ' por \' para evitar inyección SQL. +OGLIVEDIR="${DIR//\'/\'}" +RESOURCE="${2//\'/\'}" +# Componer fichero con credenciales de conexión. +touch $MYCNF +chmod 600 $MYCNF +cat << EOT > $MYCNF +[client] +user=$USUARIO +password=$PASSWORD +EOT +# Borrar el fichero temporal si termina el proceso. +trap "rm -f $MYCNF" 0 1 2 3 6 9 15 +# Actualizar ogLive para todos los clientes y reasignar plantilla PXE. +listclientmode "$RESOURCE" | awk -F\" '{print $2,$4}' | \ + while read PC BOOTMODE; do + date +"%b %d %T $PROG: Configurando \"$PC\" con cliente \"$OGLIVEDIR\"" | tee -a $LOGFILE + mysql --defaults-extra-file=$MYCNF -D "$CATALOG" -e \ + "UPDATE ordenadores SET oglivedir='$OGLIVEDIR' WHERE nombreordenador='$PC';" + setclientmode $BOOTMODE $PC PERM >/dev/null + done |