nowy2008 Napisano Styczeń 22, 2009 Zgłoszenie Share Napisano Styczeń 22, 2009 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 More sharing options...
Kamil Michalak Napisano Marzec 18, 2009 Zgłoszenie Share Napisano Marzec 18, 2009 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 More sharing options...
Rekomendowane odpowiedzi
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ę