summaryrefslogtreecommitdiffstats
path: root/server/bin/listclientlive
diff options
context:
space:
mode:
Diffstat (limited to 'server/bin/listclientlive')
-rwxr-xr-xserver/bin/listclientlive50
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
+