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