Testowanie urządzeń sieciowych
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" 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
Kod jest dostępny na licencji MIT. Jednak niektóre rozwiązania mogą być objęte inną licencją. W takim przypadku jest, to zaznaczone. Artykuły są dostępne na licencji CC-BY.
Jeżeli spodobał ci się ten wpis, to podziel się nim z innymi lub wesprzyj autora.