Dodam tylko ze nie jestem specem od skryptow w sh. To napisane pozniej opiera sie na skryptach znalezonych na freesco.
Jeszcze jedno. W przypadku padu LAN rebootuje system. Powinno zadzialac ifconfig ethX down i potem up ... ale raz probowalem i niezadzialalo. Dostep do internetu jest na poziomie "krytyczny" wiec nie moge sobie pozwolic na oczekiwanie na pad i kolejne testy. W razie czego wystarczy w skrypcie pomienic
reboot na
ifconfig eth0 down
ifconfig eth0 up
i to samo dla eth1 w zaleznosci do ktorego eth jest podpiety LAN i internet.
#!/bin/sh
#
#Skad pobierac IP kompow LAN (ja mam wlasny plik, ale moze byc justice.hst)
#for komp in `cat /etc/justice.hst`; do
for komp in `cat /home/hosty`; do
if [ "$ok_lan" = "" ]; then
res_lan=`ping -c 1 $komp | grep "bytes from"`;
fi
if [ "$res_lan" != "" ]; then
ok_lan="Lan wskazal $komp";
break;
fi
done
#Tutaj sprawdzam czy Internet dziala. Sprawdzam IP onetu, wp i home.pl,
#Tworzymy wiec plik hosty_wan do ktorego wpisujemy ip onetu, wp i home lub kto jak lubi
#IP powinny byc cwpisywane po Enterze
for serv in `cat /usr/local/ka/hosty_wan`; do
if [ "$ok_wan" = "" ]; then
res_wan=`ping -c 1 $serv | grep "bytes from"`;
#echo "Wartosc rezultatu $res_wan";
fi
if [ "$res_wan" != "" ]; then
ok_wan="Wan wskazal $serv";
break;
fi
done
if [ "$ok_wan" = "" ]; then
echo "Server is down (WAN and ~LAN). Reboot w przygotowaniu. Zrzucam logi";
#nalezy wprowadzic adres e-mail na koncu
echo "$TMP" | smtpclient -s "[FREESCO] WAN i moze LAN wisi" -f logs@adres.emial.pl -S smtp.serwer.pl -L logs@adres.email.pl
echo "LAN = $komp";
echo "WAN = $serv";
#zrzucenie logow zeby nie zniknely ;-)
sysinfo > /usr/local/ka/sysinfo.dwan
netinfo > /usr/local/ka/netinfo.dwan
cat /proc/net/arp > /usr/local/ka/arp.log
reboot
elif [ "$ok_lan" = "" ]; then
echo "LAN is down. Wysylam poczte, zapisuje logi i przygotowuje sie do resta
echo "LAN = $komp";
echo "WAN = $serv";
sysinfo > /usr/local/ka/sysinfo.dlan
netinfo > /usr/local/ka/netinfo.dlan
cat /proc/net/arp > /usr/local/ka/arp.log
TMP="Jest problem z serwerem. Nie znalazlem hostow LAN !
WAN = $ok_wan";
#ponownie wklepujemy adres e-mail i server smtp naszej poczty
echo "$TMP" | smtpclient -s "[FREESCO]LAN is down" -f logs@adres.poczty.pl -S smtp.serwer.pl -L logs@adres.poczty.pl
reboot;
else
TMP="OK.
LAN = $ok_lan
WAN = $ok_wan";
#tutaj mozna wlaczyc zeby informowal czy serwer zyje, oczywiscie zmieniamy jak wyzej
#echo "$TMP" | smtpclient -s "[FREESCO]Server is OK" -f logs@adres.poczty.pl -S smtp.serwer.pl -L logs@adres.poczty.pl
#echo "OK.";
echo "LAN = $komp";
echo "WAN = $serv";
echo `date`;
fi
teraz wpisujemy crontab -e i wporwadzamy linie:
Cytuj:
*/4 6-16 * * 0-5 /usr/local/ka/silent > /usr/local/ka/ka-s-tydzien.log
Moj plik nazywa sie silent i znajduje sie w /usr/local/ka/silent. co oznacza ze sprawdza lacza co 4 minuty w godzinach od 6 do 16:56 od poniedzialku do soboty i zapisuje rezultaty w /usr/local/ka/ka-s-tydzien.log. Oczywiscie mozna