Skocz do zawartości

Skrypt - Ping


nowy2008

Rekomendowane odpowiedzi

Witam mam skrypt ktory pinga serwery ale chce go troche zmodyfikowac... i nie za bardzo wiem jak:/

otóz po pierwsze chciałbym aby lista serwerów (adresó) była pobierana z pliku, po drugie jezeli serwer nie odpowiada (np ping -c 4 192.1.1.1 wszystkie pakiety lost) to powinien zostac jeszcze raz sprawdzony po 2 min i jezeli dalej lezy to wyslany mail na zdefiniowany w skrypcie adres z wiadomoscia "adres $adres_serwera nie dostępny $DATE"

 

#!/bin/bash
ip[1]=www.onet.pl
ip[2]=www.wp.pl
ip[3]=www.google.pl
ip[4]=www.sport.pl
ip[5]=www.zle.llp


OK="ok"
critical="critical"

clear
echo "test - ping"
echo "$------------------------------"
while true; do
 echo -e '\n' $(date +%T) ' ';

// jeżeli będzie plik to można dodać zmienna L=cat /bin/lista.hostow | wc -l   - bedzie dobrze?
 for i in 1 2 3 4 5; do
   sekund1=$(date +%s)

   for index in 1 2 3 4 5 ; do
       czas=$(date +%s)
       ping -c 1 -w 5 ${ip[index]} > /dev/null;
       result=$?;
       czas2=$(date +%s)
       czas=$((czas2-czas))
// zamiast nazwy dla ip[1] - www.onet.pl wyswietla mi sie sam napis index?
       if [[ $result -ne 0 ]]; then echo  "$ip[index] - $critical";
       elif [[ $czas -lt 1 ]]; then
           echo  "$ip[index] - $OK";
       else echo "$ip[index] - $OK";
       fi;

   done
 sekund2=$(date +%s)
 sekund=$((sekund2-sekund1))
 sekund=$((30-sekund))
 if [[ i -lt 5 ]]; then
   echo -n '  '
 fi
 if [[ $sekund -gt 0 ]]; then
   sleep $sekund;
 fi
 done
done

 

-------------------

Do wklejania kodu stosujemy - jak nietrudno się domyślić - znaczniki [code][/code] (listingi do ok.15 linii albo [codebox][/codebox] (gdy listing jest dłuższy). Proszę tego przestrzegać.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 1 month later...

Mam nadzieję, że to będzie zadowalające. Musisz tylko podać przy końcu adres e-mail. Nazwa pliku podawana jest jako parametr.

 

#!/bin/bash

status="OK"			## zakładamy, że wszystkie hosty są osiągalne

ile=`wc -l $1 | awk '{print $1}'`	## ile adresów do sprawdzenia
i=$ile					## dodatkowy licznik pomocniczy 

echo $ile " hostów do sprawdzenia"

while [ "$ile" != "0" ]; do		## wrzuć adresy do tablicy
adres_ip=`head --l $ile $1 | tail -1`
ip[ile]=$adres_ip
ile=$[ile-1]
done

echo "---------------"
while [ "$i" != "0" ]; do
echo ""
echo -n "Sprawdzanie " 
echo -n "${ip[$i]}"
result=`2>> message.txt ping -c 4 ${ip[$i]} | awk '{print $8}' | tail --l 2 | head --l 1`
if [ "$result" == "100%" ]; then		## jeżeli straciliśmy wszystkie pakiety
	echo -n "	<-----------  sprawdzam ponownie"
	sleep 2m				## sprawdź ponownie za 2 minuty
	result=`2>> message.txt ping -c 4 ${ip[$i]} | awk '{print $8}' | tail --l 2 | head --l 1`
	if [ "$result" == "100%" ]; then
		echo ${ip[$i]} >> message.txt	## lista nieosiągalnych hostów
		status="fail"			## zapamiętaj porażkę
	fi
fi
i=$[i-1]
done
if [ "$status" == "fail" ] || [ -f message.txt ]; then
cat message.txt | mail -s "Unreachable hosts" "[email protected]"	## wyślij powiadomienie
fi										## o błędach na adres e-mail

echo ""
echo "Zakończono sprawdzanie hostów"
echo "Usuwanie plików tymczasowych..."

rm -rf ./message.txt

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...