source: server/bin/comparedhcpopengnsys

qndtest
Last change on this file was 0c0ba58, checked in by Irina Gómez <irinagomez@…>, 4 years ago

#488 #959 comparedhcpopengnsys: Fixes error when computer definition was in one line.

  • Property mode set to 100755
File size: 2.7 KB
Line 
1#!/bin/bash
2
3#/**
4#@file    comparedhcpopengnsys
5#@brief   Compara la configuración de los equipos en el dhcp y la base de datos de opengnsys
6#@brief   Definir la variable "DHCPFILE" para indicar un fichero DHCP alternativo.
7#@usage   comparedhcpopengnsys
8#@usage   DHCPFILE=/camino/fichero/dhcpd.conf comparedhcpopengnsys
9#@warning El script utiliza dos archivos temporales, uno de cada servicio, con el formato nombre;mac;ip.
10#@warning El formato depende de que el fichero dhcpd.conf este en el orden "correcto"
11#@version 1.0.4
12#@author  Irina Gómez, Univ. Sevilla.
13#@date    2012-02-08
14#*/ ##
15
16
17PROG="$(basename "$0")"
18OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"}
19SERVERCONF=$OPENGNSYS/etc/ogAdmServer.cfg
20DHCPFILE=${DHCPFILE:-/etc/dhcp/dhcpd.conf}
21TMP_DHCP=/tmp/$PROG-dhcp$$
22TMP_MYSQL=/tmp/$PROG-mysql$$
23
24source $OPENGNSYS/lib/ogfunctions.sh || exit 1
25
26[ "$*" == "help" ] && help
27[ "$*" == "version" ] && version
28[ "$USER" != "root" ] && raiseError access "Solo ejecutable por root"
29[ -r $DHCPFILE ] || raiseError access "No tenemos acceso al fichero de configuracion del dhcp"
30
31# Obtener datos de acceso a la Base de datos.
32source $SERVERCONF 2> /dev/null || raiseError access "Fichero de configuración del servidor"
33
34trap "rm -f $TMP_DHCP $TMP_MYSQL" 1 2 3 9 15
35# Genero fichero temporal de dhcp recorriendo la configuración del dhcp cadena a cadena.
36# Quito comentarios del fichero
37CONTENIDO=$(sed  's/#.*$//' $DHCPFILE)
38OLDLINE=""
39HOST=""
40IP=""
41MAC=""
42for LINE in ${CONTENIDO} ; do
43    case $LINE in
44        "host")           OLDLINE="host" && continue ;;
45        "hardware")       OLDLINE="hardware" && continue ;;
46        "ethernet")       [ "$OLDLINE" == "hardware" ] && OLDLINE="hardware ethernet" && continue ;;
47        "fixed-address")  OLDLINE="fixed-address" && continue ;;
48        "}")              [ "$HOST" == "" ] || echo "$HOST;${MAC%%;};${IP%%;}" >> $TMP_DHCP
49                          HOST=""
50                          IP=""
51                          MAC=""
52                          continue
53                          ;;
54    esac
55    case "$OLDLINE" in
56        "host")              HOST=$LINE ;;
57        "hardware ethernet") MAC=$(echo $LINE|sed s/://g)  ;;
58        "fixed-address")     IP=$LINE ;;
59    esac
60    OLDLINE=""
61done
62# Ordeno el fichero
63sort -o $TMP_DHCP $TMP_DHCP
64
65# Creo fichero temporal del mysql, de la base de datos de opengnsys
66dbexec "select CONCAT_WS (';', nombreordenador, mac, ip) from ordenadores order by nombreordenador;" > $TMP_MYSQL
67
68# Comparo los ficheros
69echo "Comparamos las configuraciones: < dhcp y > mysql"
70diff -bi $TMP_DHCP $TMP_MYSQL && echo "El fichero del servicio dhcp y la base de datos de ogAdmBD tienen la misma configuracion"
71
72rm -f $TMP_DHCP $TMP_MYSQL
73
Note: See TracBrowser for help on using the repository browser.