From da6986dc0a5750751d28a699d077adba5af5c628 Mon Sep 17 00:00:00 2001 From: "Ramón M. Gómez" Date: Tue, 18 Feb 2020 10:28:38 +0100 Subject: #957: Script `listclientlive` uses common server functions. --- server/bin/listclientlive | 57 +++++++++++++++++------------------------------ server/lib/ogfunctions.sh | 1 + 2 files changed, 22 insertions(+), 36 deletions(-) diff --git a/server/bin/listclientlive b/server/bin/listclientlive index 3aeccce3..3e9a7cfb 100755 --- a/server/bin/listclientlive +++ b/server/bin/listclientlive @@ -1,50 +1,35 @@ #!/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 +#/** +#@file listclientlive +#@brief Lista la distribución ogLive asociada a los clientes, ya sea un equipo o un aula. +#@usage listclienlive Ambito +#@param Ambito nombre de ordenador o nombre de aula +#@version 1.1.0 - Versión inicial basada en el script "listclientmode" +#@author Ramón M. Gómez, ETSII Universidad de Sevilla +#@date 2017-06-01 # Variables. -PROG=$(basename "$0") OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"} SERVERCONF=$OPENGNSYS/etc/ogAdmServer.cfg TFTPDIR=$OPENGNSYS/tftpboot -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" >&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 +[ "$*" == "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 # 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 +dbexec "SELECT CONCAT_WS('', 'Equipo \"', ord.nombreordenador, '\" asociado a cliente \"', + ord.oglivedir, '\" $([ -e $TFTPDIR/$OGLIVE ] || echo "(inexistente)")') + FROM ordenadores AS ord + JOIN aulas USING (idaula) + WHERE aulas.nombreaula='$RESOURCE' + OR ord.nombreordenador='$RESOURCE';" diff --git a/server/lib/ogfunctions.sh b/server/lib/ogfunctions.sh index f1b9e555..30da3107 100755 --- a/server/lib/ogfunctions.sh +++ b/server/lib/ogfunctions.sh @@ -10,6 +10,7 @@ # Showing an error message. function raiseError() { + [ "$PROG" ] || PROG="$(basename "$0")" case "$1" in usage) echo "$PROG: Usage error: Type \"$PROG help\"" >&2 -- cgit v1.2.3-18-g5258