diff options
Diffstat (limited to 'server/bin/listclientlive')
-rwxr-xr-x | server/bin/listclientlive | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/server/bin/listclientlive b/server/bin/listclientlive new file mode 100755 index 00000000..3aeccce3 --- /dev/null +++ b/server/bin/listclientlive @@ -0,0 +1,50 @@ +#!/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 ord.nombreordenador, ord.oglivedir + FROM ordenadores AS ord + JOIN aulas USING (idaula) + WHERE aulas.nombreaula='$RESOURCE' + OR ord.nombreordenador='$RESOURCE';" | \ + while read -r PC OGLIVE; do + echo "Equipo \"$PC\" asociado a cliente \"$OGLIVE\" $([ -e $TFTPDIR/$OGLIVE ] || echo "(inexistente)")" + done + |