Popełniłem w ramach pracy zaliczeniowej taki oto prosty skrypcik. Jego zadaniem jest wysyłanie pojedynczego pinga do urządzeń z listy. Jeżeli któreś z urządzeń nie odpowiada to na zdefiniowany adres wysyłany jest mail z informacją. Cała sztuczka oparta jest o ping, grep i mail. Można zatem założyć, że nawet zwykły użyszkodnik będzie wstanie uruchomić to narzędzie w celu śledzenia swoich maszynek. Licencja Beerware.
Listing 1. Pełen kod programu HostTest
#!/bin/bash #/* # * ---------------------------------------------------------------------------- # * "THE BEER-WARE LICENSE" (Revision 42): # * <bjkuczynski@gmail.com> wrote this file. As long as you retain this notice you # * can do whatever you want with this stuff. If we meet some day, and you think # * this stuff is worth it, you can buy me a beer in return Poul-Henning Kamp # * ---------------------------------------------------------------------------- # */ EMAIL="" if [ "$1" == "-h" ] then echo " Pomoc programu HostTest"; echo "w celu prawidłowego działania programu należy:" echo " Utworzyć plik hosts w katalogu ze skryptem."; echo " Plik powinien zawierać listę hostów, które będą sprawdzane. Jeden host na linię."; echo " W pliku ze skryptem ustawić zmienną EMAIL na adres docelowy administratora"; exit; fi function sendAlert { SUBJECT="HOST $1 PROBELM" EMAILMESSAGE="/tmp/emailmessage.txt" echo "Dear admin!"> $EMAILMESSAGE echo "Host $1 doesn't response for ping command." >>$EMAILMESSAGE echo "Command output message is: $2" >>$EMAILMESSAGE echo "Have a nice day." >>$EMAILMESSAGE echo "Your server" >>$EMAILMESSAGE mail -s "$SUBJECT" "$EMAIL" < $EMAILMESSAGE } function testHost { result=`ping -c 1 $1 > msg 2>&1`; result=`cat msg | grep -E "(unknown host)|([rR]equest [tT]imeout)"`; if [ ! "$result" == "" ] then sendAlert $1 "$result" fi } if [ ! -f hosts ] then echo "brak pliku hosts"; fi lista=`cat hosts`; for host in $lista do testHost $host done