Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Witajcie,
W przypływie weny twórczej spłodziłem sobie skrypcik do monitorowania sieci - zdefiniowanych wcześniej hostów. Działa w oparciu o polecenie ping. Ogólnie działa Oki ale chciałbym jeszcze wrzucić go w jakiś lepszy interface. Tutaj listingi
plik dslmonitorproces - skrypt odpalony w cronie sprawdza hosty co powiedzmy 10 min.
#!/bin/bash counter=0 until [ $counter -ge $(wc -l<hosts.db) ] do counter=$[counter + 1] host=`head -n$counter hosts.db | tail -n1 | cut -d : -f 1` city=`head -n$counter hosts.db | tail -n1 | cut -d : -f 2` id=`head -n$counter hosts.db | tail -n1 | cut -d : -f 3` phone=`head -n$counter hosts.db | tail -n1 | cut -d : -f 4` ping -q -c2 -n -s 3 $host if [ "$?" = "0" ]; then status="[Online]" else status="Offline !!!" fi echo -e "$id\t$host\t$city $status">>pings_tmp.db done cat pings_tmp.db>pings.db unlink pings_tmp.db echo -e "\a"
pobiera hosty z pliku host.db który ma strukture:
iphosta1:miasto:id:telefon iphosta2:miasto:id:telefon
i wpisuje rezultaty w formie wynikowej do wyświetlenia w pliku pings.db
id ip miasto telefon ....
plik pings.db jest wyswietlany za pomoca skryptu start w dialogu textbox:
#!/bin/bash until [ "$x" = "1" ] do curentdate=`date` time=`stat --print=%y pings.db` dialog --title "Status sieci z $time" --backtitle "Monitor Sieci $curentdate" --exit-label "Refresh" --timeout 30 --textbox pings.db 20 70 done
dialog odmierzany co 30 sekund, ogólny mechanizm:
hosts.db -> dslmonitorproces -> pings.db -> start
jest jescze skrypt dodajacy nowe hosty do tej płaskiej bazy ale nie będe go tu przedstawiał
Tak jak już pisałem wszystko fajnie funkcjonuje oprócz:
ad1. wyniki mam przedstawione w dialogu który znajduje się w pętli co strasznie utrudnia wyjście ze skryptu?
ad2. czy istnieje jakiś inny sposób przedstawienia tych danych w formie 'tabelarycznej', który pozwoliłby na odswierzanie wyników oraz możliwiość dołączenia dodatkowych opcji do wyboru?
Myślałem o skrypcie generującym kod html ale nie chcem instalować na tym serku apacha.
Pozdrawiam
Michał
Offline
webmaster@esco.pl napisał(-a):
Myślałem o skrypcie generującym kod html ale nie chcem instalować na tym serku apacha.
I słusznie, apache byłby jak strzelanie z armaty do muchy. Za to możem zainstalować na serku inny malutki serwer HTTP, np. thttpd, boa, fnord, dhttpd, mini-httpd, monkey, etc.
Na upartego w ogóle nie trzeba instalować serwera HTTP, tylko wyświetlać na shellu wynik za pomocą tekstowej przeglądarki (w3m, links, elinks, lynx), choć serwer HTTP chyba byłby lepszy.
Offline
nc ! :D
// ? -- azhag
Ostatnio edytowany przez azhag (2008-12-09 12:06:57)
Offline
webmaster@esco.pl napisał(-a):
W przypływie weny twórczej spłodziłem sobie skrypcik do monitorowania sieci - zdefiniowanych wcześniej hostów. Działa w oparciu o polecenie ping.
Ale zdajesz sobie sprawę, że to że komputer odpowiada na ping wcale nie oznacza, że prawidłowo spełnia swoją funkcję? (No chyba że chodzi o kompytery klienckie.)
webmaster@esco.pl napisał(-a):
Kod:
#!/bin/bash counter=0 until [ $counter -ge $(wc -l<hosts.db) ] do counter=$[counter + 1] host=`head -n$counter hosts.db | tail -n1 | cut -d : -f 1` city=`head -n$counter hosts.db | tail -n1 | cut -d : -f 2` id=`head -n$counter hosts.db | tail -n1 | cut -d : -f 3` phone=`head -n$counter hosts.db | tail -n1 | cut -d : -f 4`
ZOMFG.
while read line ; do host=$(echo "$line" |awk -F : '{print $1}') .... done < /sciezka/do/hosts.db
Kolejne pola (city etc.) przypisane są kolejnym liczbom naturalnym. Więc w city musisz użyć zmiennej $2 itd.
Aha — rozsądniej byłoby podać ścieżkę absolutną do pliku hosts.db. Różne rzeczy się zdarzają.
webmaster@esco.pl napisał(-a):
cat pings_tmp.db>pings.db
unlink pings_tmp.db
Słyszałeś kiedyś o mv?
webmaster@esco.pl napisał(-a):
i wpisuje rezultaty w formie wynikowej do wyświetlenia w pliku pings.db
Kod:
id ip miasto telefon ....
Nie. Jakkolwiek przypisujesz wartość zmiennej $phone, nigdzie z niej nie korzystasz.
webmaster@esco.pl napisał(-a):
until [ "$x" = "1" ]
To taki pokręcony sposób na while [ true ]?
azhag: chodzi o program netcat.
Offline