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.