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" < $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

Napisz odpowiedź

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax