source: server/bin/comparemac @ c25e2ce

918-git-images-111dID-1020_logrotateBugID-1037_Mostrar.TipoDisco.WebID-1038_Muestra.el.numero.de.ordenadoresID-1039_Asignar_Disco.Particion.Imagen.AccesoRemotoID-824_Iniciar.Sistema.Restauradodevel-ogadmserver-for-masterdisk-imagemainmaster-1037opengnsys-1.1.1dpreqndtest
Last change on this file since c25e2ce was d7fe54a, checked in by ramon <ramongomez@…>, 7 years ago

#730: Sustitución del nombre del proyecto en ficheros del servidor.

git-svn-id: https://opengnsys.es/svn/branches/version1.1@5390 a21b9725-9963-47de-94b9-378ad31fedc9

  • Property mode set to 100755
File size: 1.7 KB
Line 
1#!/bin/bash
2# comparemac - script para comparar las direcciones MAC (ethernet) de los clientes
3#              conectados a la red con las registradas en OpenGnsys.
4# Requisitos: arp-scan
5# Autores: Manuel González, Ramón M. Gómez - Univ. Sevilla, Junio 2014.
6
7# Variables.
8PROG=$(basename $0)
9OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"}
10SERVERCONF=$OPENGNSYS/etc/ogAdmServer.cfg
11
12# Ficheros temporales.
13MYCNF=$(mktemp /tmp/.my.cnf.XXXXX)
14TMPSQL=$(mktemp /tmp/mysql.cnf.XXXXX)
15TMPSCAN=$(mktemp /tmp/scan.cnf.XXXXX)
16
17# Control de errores.
18if [ ! -r $SERVERCONF ]; then
19        echo "$PROG: Sin acceso a fichero de configuración."
20        exit 2
21fi
22if ! which arp-scan &>/dev/null; then
23        echo "$PROG: Debe instalarse el programa \"arp-scan\"."
24        exit 2
25fi
26
27# Obtener datos de acceso a la base de datos.
28source $SERVERCONF
29
30# Componer fichero con credenciales de conexión.
31cat << EOT > $MYCNF
32[client]
33user=$USUARIO
34password=$PASSWORD
35EOT
36
37# Borrar ficheros temporales si termina el proceso.
38trap "rm -f $MYCNF $TMPSQL $TMPSCAN" 0 1 2 3 6 9 15
39
40# Obtener datos de ordenadores registrados.
41mysql --defaults-extra-file=$MYCNF -D "$CATALOG" -s -N -e \
42                "SELECT ip, mac, REPLACE (aulas.nombreaula, ' ', '_') AS aula
43                   FROM ordenadores
44                   JOIN aulas USING (idaula)
45                  ORDER BY ip" > $TMPSQL
46
47# Obtener datos de red.
48NET=$(ip -o addr show up | awk -v ip="^$ServidorAdm/" '{if ($3=="inet" && $4 ~ ip) print $4}')
49arp-scan $NET 2>/dev/null | awk '/^[0-2]*\./ {gsub(/:/,"");print $1,toupper($2)}' > $TMPSCAN
50
51# Comparar los ficheros y mostrar las diferencias de direcciones MAC.
52(while read -e IP MAC; do
53        awk -v ip=$IP -v mac=$MAC '{if ($1 == ip && $2 != mac)
54                                        printf("%s (%s) conectado con MAC %s, registrado con %s\n",ip,$3,mac,$2);
55                                   }' $TMPSQL
56done) < $TMPSCAN
57
Note: See TracBrowser for help on using the repository browser.