#!/bin/bash # Descripcion: scrit compara la configuración de los equipos en el dhcp y la base de datos de opengnsys # utiliza dos archivos temporales, uno de cada servicio, con el formato nombre;mac;ip. # El formato depende de que el fichero dhcpd.conf este en el orden "correcto" # Uso: comparedhcpopengnsys (fichero DHCP por defecto: /etc/dhcp/dhcpd.conf) # DHCPFILE=/camino/fichero/dhcpd.conf comparedhcpopengnsys # Autora: Irina Gómez, Univ. Sevilla. # Fecha: 2012-02-08 PROG=$(basename $0) DHCPFILE=${DHCPFILE:-/etc/dhcp/dhcpd.conf} TMP_DHCP=/tmp/$PROG-dhcp$$ TMP_MYSQL=/tmp/$PROG-mysql$$ TMP_MYCNF=/tmp/.my.cnf.$$ OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"} SERVERCONF=$OPENGNSYS/etc/ogAdmServer.cfg if [ "$USER" != "root" ]; then echo "$PROG: Error: solo ejecutable por root" >&2 exit 1 fi if [ ! -r $DHCPFILE ] ; then echo "$PROG: No tenemos acceso al fichero de configuracion del dhcp" exit 2 fi # Obtener datos de acceso a la Base de datos. source $SERVERCONF # Componer fichero con credenciales de conexión. touch $TMP_MYCNF chmod 600 $TMP_MYCNF cat << EOT > $TMP_MYCNF [client] user=$USUARIO password=$PASSWORD EOT trap "rm -f $TMP_DHCP $TMP_MYSQL $TMP_MYCNF" 1 2 3 9 15 # Creo fichero temporal del dhcp grep -v "#" $DHCPFILE |egrep -e "host " -e "hardware ethernet" -e fixed-address | sed -e 's/.$//' \ | sed -e s/"^.*host[[:space:]]*"//g -e s/\{/\;/g -e s/"^.*hardware ethernet[[:space:]]*"/=/g -e s/"^.*fixed-address[[:space:]]*"/=/g \ | sed -e :a -e '$!N;s/\n=/ \;/;ta' -e 'P;D'\ | sed -e s/\ //g -e s/://g -e s/\;$//g -e s/\;\;/\;/g |sort > $TMP_DHCP # Creo fichero temporal del mysql, de la base de datos de opengnsys mysql --defaults-extra-file=$TMP_MYCNF -D "$CATALOG" -N -e \ "select CONCAT_WS (';', nombreordenador, mac, ip) from ordenadores order by nombreordenador;" > $TMP_MYSQL # Comparo los ficheros echo "Comparamos las configuraciones: < dhcp y > mysql" diff -bi $TMP_DHCP $TMP_MYSQL [ $? == 0 ] && echo "El fichero del servicio dhcp y la base de datos de ogAdmBD tienen la misma configuracion" rm -f $TMP_DHCP $TMP_MYSQL $TMP_MYCNF