dhcp változások figyelése

Ha már úgyis a dhcp klienst bütykölöm, akkor megoldottam az e-mailes értesítést is a változásokról. Használhatnám statikus beállításokkal is a hálót, de akkor biztos eltartana egy ideig, amíg rájönnék egy-egy esetleges változásból adódó hiba okára. A következőt találtam ki:

# cat /etc/dhclient-exit-hooks
#!/bin/bash

#set > /tmp/dhclient-defaults
MAILTO=root

if [ $(set | grep "^new_" | wc -l) -lt 2 ]
then
    exit
fi

NUM=$(set | grep -v BASH | grep -v "^old_" | grep -Ff /etc/dhclient-watch | diff -aB  - /etc/dhclient-defaults | grep -v "^>" | wc -l)
if [ $NUM != 0 ]
then
    set | grep -v BASH | grep -v "^old_" |  grep -Ff /etc/dhclient-watch | diff-aB  - /etc/dhclient-defaults | mail $MAILTO -s "dhcp changes"
fi

A szkript a következőt teszi: ha vannak új beállításokat tartalmazó környezeti változók (new_*), akkor azokat megvizsgálja, pontosabban összehasonlítja korábbi értékekkel. Ezek a dhclient-defaults fájlban találhatóak, míg a vizsgálandó változók listája a dhclient-watch fájlba kerül.

# cat /etc/dhclient-watch
interface
nameserver
new_broadcast_address
new_broadcast_arg
new_dhcp_message_type
new_dhcp_server_identifier
new_domain_name
new_domain_name_servers
new_ip_address
new_network_number
new_routers
new_subnet_arg
new_subnet_mask
release
relmajor
relminor

A dhclient-defaults pedig valami ehhez hasonló lehet:

# cat /etc/dhclient-defaults
interface=eth0
nameserver=192.168.1.15
new_broadcast_address=192.168.1.255
new_broadcast_arg='broadcast 192.168.1.255'
new_dhcp_message_type=5
new_dhcp_server_identifier=192.168.1.1
new_domain_name='sch.bme.hu bme.hu'
new_domain_name_servers='192.168.1.1'
new_ip_address=192.168.1.15
new_network_number=192.168.1.0
new_routers=192.168.1.254
new_subnet_arg='netmask 255.255.255.0'
new_subnet_mask=255.255.255.0
release=2
relmajor=6
relminor=13

Ez utóbbi fájl egyszerűen létrehozható, ha egy futtatás erejéig a dhclient-exit-hooks harmadik sora (set > /tmp/dhclient-defaults) elől kitöröljük a #-et (és utána a megfelelő helyre másoljuk, illetve megfelelően módosítjuk).

Elegánsabb megoldások nyugodtan jöhetnek hozzászólásként!

Hozzászólások

jól jött

Ma például különösen jól jött a szkript, mert a DHCP-szerver valamiért nem küldte a new_routers-t, így csak helyi hálón lógó gépekre tudtam csatlakozni gateway hiányában. Az e-mail olvasás utána rögtön leesett, hogy csak egy route add default gw parancs szükséges ahhoz, hogy újra rendes netem legyen.

Tartalom átvétel