#!/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