diff options
author | Ramón M. Gómez <ramongomez@us.es> | 2020-02-18 11:48:20 +0100 |
---|---|---|
committer | Ramón M. Gómez <ramongomez@us.es> | 2020-02-18 11:48:20 +0100 |
commit | b7bed1cadd303dc5e927b8d6c33306171fe8ff12 (patch) | |
tree | 17d1f06a29f1f9655d0763ed5ba517e6cf736984 | |
parent | 1f6fd0684cd1cb3ee321307b8d68ed4c3fde074b (diff) |
#957: Script `listclientmode` uses common server functions.
-rwxr-xr-x | server/bin/listclientmode | 64 |
1 files changed, 28 insertions, 36 deletions
diff --git a/server/bin/listclientmode b/server/bin/listclientmode index 5d02bcee..4193c6fc 100755 --- a/server/bin/listclientmode +++ b/server/bin/listclientmode @@ -1,51 +1,43 @@ #!/bin/bash -# listclientmode: Lista la plantilla de arranque PXE para los clientes, -# ya sea un equipo o un aula. -# Nota: Si no existe un enlace entre el fichero PXE con la Ethernet del equipo y su -# archivo plantilla, se considera que la plantilla por omisión es "default". -# Uso: listclienmode NombrePC | NombreAula -# Autores: Irina Gomez y Ramon Gomez - Univ. Sevilla, noviembre 2010 +#/** +#@file listclientmode +#@brief Lista la plantilla de arranque PXE para los clientes, ya sea un equipo o un aula. +#@usage listclientmode Ambito +#@param Ambito nombre de ordenador o nombre de aula +#@version 1.0.1 - Versión inicial. +#@author Irina Gómez, Univ. Sevilla +#@date 2010-11-29 +#@version 1.0.5 - Mejor acceso a la BD. +#@author Ramon M. Gómez, Univ. Sevilla +#@date 2013-03-11 +#**/ # Variables. -PROG=$(basename $0) OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"} SERVERCONF=$OPENGNSYS/etc/ogAdmServer.cfg TMPLDIR=$OPENGNSYS/tftpboot/menu.lst/templates -MYCNF=/tmp/.my.cnf.$$ + +source $OPENGNSYS/lib/ogfunctions.sh || exit 1 # Control básico de errores. -if [ $# -ne 1 ]; then - echo "$PROG: Error de ejecución" - echo "Formato: $PROG [NOMBRE_PC|NOMBRE_AULA]" - exit 1 -fi -if [ ! -r $SERVERCONF ]; then - echo "$PROG: Sin acceso a fichero de configuración" - exit 2 -fi +[ "$*" == "help" ] && help +[ "$*" == "version" ] && version +[ $# -eq 1 ] || raiseError usage +[ "$USER" != "root" ] && raiseError access "Need to be root" +source $SERVERCONF 2>/dev/null || raiseError access "Sin acceso a fichero de configuración" # 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 +RESOURCE="${1//\'/\\\'}" # 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, arranque FROM ordenadores - JOIN aulas USING (idaula) - 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)" - done +dbexec "SELECT nombreordenador, arranque + FROM ordenadores + JOIN aulas USING (idaula) + 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)" + done |