source: server/bin/comparemac

qndtest
Last change on this file was ed1886b, checked in by Ramón M. Gómez <ramongomez@…>, 4 years ago

#957: Script comparemac uses common server functions.

  • Property mode set to 100755
File size: 1.7 KB
Line 
1#!/bin/bash
2#/**
3#@file    comparemac
4#@brief   Comparar las direcciones MAC (ethernet) de los clientes conectados a la red con las registradas en OpenGnsys.
5#@usage   comparemac
6#@warning Usa el programa "arp-scan".
7#@version 1.0.6 - Versión inicial.
8#@author  Manuel González, Ramón M. Gómez - Univ. Sevilla
9#@date    2014-07-11
10#*/ ##
11
12
13# Variables.
14OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"}
15SERVERCONF=$OPENGNSYS/etc/ogAdmServer.cfg
16
17# Funciones globales.
18source $OPENGNSYS/lib/ogfunctions.sh || exit 1
19
20# Control de errores.
21[ "$*" == "help" ] && help
22[ "$*" == "version" ] && version
23[ $# -gt 0 ] && raiseError usage
24[ "$USER" != "root" ] && raiseError access "Need to be root"
25[ -r $SERVERCFG ] || raiseError access "Server configuration file"
26which arp-scan &>/dev/null || raiseError notfound "Need to install \"arp-scan\""
27
28# Obtener datos de acceso a la base de datos.
29source $SERVERCONF
30
31# Borrar ficheros temporales si termina el proceso.
32trap "rm -f $TMPSQL $TMPSCAN" 0 1 2 3 6 9 15
33
34# Ficheros temporales.
35TMPSQL=$(mktemp /tmp/mysql.cnf.XXXXX)
36TMPSCAN=$(mktemp /tmp/scan.cnf.XXXXX)
37
38# Obtener datos de ordenadores registrados.
39dbexec "SELECT ip, mac, REPLACE (aulas.nombreaula, ' ', '_') AS aula
40          FROM ordenadores
41          JOIN aulas USING (idaula)
42         ORDER BY ip" > $TMPSQL
43
44# Obtener datos de red.
45NET=$(ip -o addr show up | awk -v ip="^$ServidorAdm/" '{if ($3=="inet" && $4 ~ ip) print $4}')
46arp-scan $NET 2>/dev/null | awk '/^[0-2]*\./ {gsub(/:/,"");print $1,toupper($2)}' > $TMPSCAN
47
48# Comparar los ficheros y mostrar las diferencias de direcciones MAC.
49(while read -e IP MAC; do
50        awk -v ip=$IP -v mac=$MAC '{if ($1 == ip && $2 != mac)
51                                        printf("%s (%s) conectado con MAC %s, registrado con %s\n",ip,$3,mac,$2);
52                                   }' $TMPSQL
53done) < $TMPSCAN
54
Note: See TracBrowser for help on using the repository browser.