#!/bin/bash #/** #@file comparedhcpopengnsys #@brief Compara la configuración de los equipos en el dhcp y la base de datos de opengnsys #@brief Definir la variable "DHCPFILE" para indicar un fichero DHCP alternativo. #@usage comparedhcpopengnsys #@usage DHCPFILE=/camino/fichero/dhcpd.conf comparedhcpopengnsys #@warning El script utiliza dos archivos temporales, uno de cada servicio, con el formato nombre;mac;ip. #@warning El formato depende de que el fichero dhcpd.conf este en el orden "correcto" #@version 1.0.4 #@author Irina Gómez, Univ. Sevilla. #@date 2012-02-08 #*/ ## PROG="$(basename "$0")" OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"} SERVERCONF=$OPENGNSYS/etc/ogAdmServer.cfg DHCPFILE=${DHCPFILE:-/etc/dhcp/dhcpd.conf} TMP_DHCP=/tmp/$PROG-dhcp$$ TMP_MYSQL=/tmp/$PROG-mysql$$ source $OPENGNSYS/lib/ogfunctions.sh || exit 1 [ "$*" == "help" ] && help [ "$*" == "version" ] && version [ "$USER" != "root" ] && raiseError access "Solo ejecutable por root" [ -r $DHCPFILE ] || raiseError access "No tenemos acceso al fichero de configuracion del dhcp" # Obtener datos de acceso a la Base de datos. source $SERVERCONF 2> /dev/null || raiseError access "Fichero de configuración del servidor" trap "rm -f $TMP_DHCP $TMP_MYSQL" 1 2 3 9 15 # Genero fichero temporal de dhcp recorriendo la configuración del dhcp cadena a cadena. # Quito comentarios del fichero CONTENIDO=$(sed 's/#.*$//' $DHCPFILE) OLDLINE="" HOST="" IP="" MAC="" for LINE in ${CONTENIDO} ; do case $LINE in "host") OLDLINE="host" && continue ;; "hardware") OLDLINE="hardware" && continue ;; "ethernet") [ "$OLDLINE" == "hardware" ] && OLDLINE="hardware ethernet" && continue ;; "fixed-address") OLDLINE="fixed-address" && continue ;; "}") [ "$HOST" == "" ] || echo "$HOST;${MAC%%;};${IP%%;}" >> $TMP_DHCP HOST="" IP="" MAC="" continue ;; esac case "$OLDLINE" in "host") HOST=$LINE ;; "hardware ethernet") MAC=$(echo $LINE|sed s/://g) ;; "fixed-address") IP=$LINE ;; esac OLDLINE="" done # Ordeno el fichero sort -o $TMP_DHCP $TMP_DHCP # Creo fichero temporal del mysql, de la base de datos de opengnsys dbexec "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 && echo "El fichero del servicio dhcp y la base de datos de ogAdmBD tienen la misma configuracion" rm -f $TMP_DHCP $TMP_MYSQL