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