From ed1886b4a943a7bd6b97bc5a4f6acbf2d5ded517 Mon Sep 17 00:00:00 2001 From: "Ramón M. Gómez" Date: Tue, 18 Feb 2020 14:00:30 +0100 Subject: #957: Script `comparemac` uses common server functions. --- server/bin/comparemac | 57 ++++++++++++++++++++++++--------------------------- 1 file changed, 27 insertions(+), 30 deletions(-) diff --git a/server/bin/comparemac b/server/bin/comparemac index 0596c323..43d0d288 100755 --- a/server/bin/comparemac +++ b/server/bin/comparemac @@ -1,48 +1,45 @@ #!/bin/bash -# comparemac - script para comparar las direcciones MAC (ethernet) de los clientes -# conectados a la red con las registradas en OpenGnsys. -# Requisitos: arp-scan -# Autores: Manuel González, Ramón M. Gómez - Univ. Sevilla, Junio 2014. +#/** +#@file comparemac +#@brief Comparar las direcciones MAC (ethernet) de los clientes conectados a la red con las registradas en OpenGnsys. +#@usage comparemac +#@warning Usa el programa "arp-scan". +#@version 1.0.6 - Versión inicial. +#@author Manuel González, Ramón M. Gómez - Univ. Sevilla +#@date 2014-07-11 +#*/ ## + # Variables. -PROG=$(basename $0) OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"} SERVERCONF=$OPENGNSYS/etc/ogAdmServer.cfg -# Ficheros temporales. -MYCNF=$(mktemp /tmp/.my.cnf.XXXXX) -TMPSQL=$(mktemp /tmp/mysql.cnf.XXXXX) -TMPSCAN=$(mktemp /tmp/scan.cnf.XXXXX) +# Funciones globales. +source $OPENGNSYS/lib/ogfunctions.sh || exit 1 # Control de errores. -if [ ! -r $SERVERCONF ]; then - echo "$PROG: Sin acceso a fichero de configuración." - exit 2 -fi -if ! which arp-scan &>/dev/null; then - echo "$PROG: Debe instalarse el programa \"arp-scan\"." - exit 2 -fi +[ "$*" == "help" ] && help +[ "$*" == "version" ] && version +[ $# -gt 0 ] && raiseError usage +[ "$USER" != "root" ] && raiseError access "Need to be root" +[ -r $SERVERCFG ] || raiseError access "Server configuration file" +which arp-scan &>/dev/null || raiseError notfound "Need to install \"arp-scan\"" # Obtener datos de acceso a la base de datos. source $SERVERCONF -# Componer fichero con credenciales de conexión. -cat << EOT > $MYCNF -[client] -user=$USUARIO -password=$PASSWORD -EOT - # Borrar ficheros temporales si termina el proceso. -trap "rm -f $MYCNF $TMPSQL $TMPSCAN" 0 1 2 3 6 9 15 +trap "rm -f $TMPSQL $TMPSCAN" 0 1 2 3 6 9 15 + +# Ficheros temporales. +TMPSQL=$(mktemp /tmp/mysql.cnf.XXXXX) +TMPSCAN=$(mktemp /tmp/scan.cnf.XXXXX) # Obtener datos de ordenadores registrados. -mysql --defaults-extra-file=$MYCNF -D "$CATALOG" -s -N -e \ - "SELECT ip, mac, REPLACE (aulas.nombreaula, ' ', '_') AS aula - FROM ordenadores - JOIN aulas USING (idaula) - ORDER BY ip" > $TMPSQL +dbexec "SELECT ip, mac, REPLACE (aulas.nombreaula, ' ', '_') AS aula + FROM ordenadores + JOIN aulas USING (idaula) + ORDER BY ip" > $TMPSQL # Obtener datos de red. NET=$(ip -o addr show up | awk -v ip="^$ServidorAdm/" '{if ($3=="inet" && $4 ~ ip) print $4}') -- cgit v1.2.3-18-g5258