Do zrobienia statusu kompów w oparciu o pingi potrzebne będą:

 

  • Serwer na Linuxie ;)
  • Serwer WWW + PHP
  • Nmap, którego ściagniesz z tej strony
  • Znajomość Admina sieciowego

Na początek instalujemy Nmapa, instrukcje znajdziesz tu

Następnie sprawdzamy czy działa, np na Onecie który ma adres ip 213.180.130.200

Wydajemy polecenie

nmap -sP 213.180.130.200

Powinnieneś otrzymać

Starting nmap V. 2.53 by fyodor@insecure.org ( www.insecure.org/nmap/ )
Host f1virt.onet.pl (213.180.130.200) appears to be up.
Nmap run completed -- 1 IP address (1 host up) scanned in 3 seconds

Działa :)

Poleceniem, które jest poniżej sprawdzane są włączone kompy

nmap -sP -oN /home/httpd/html/status.log 192.168.1.1-21

Opis opcji:

-oN /home/httpd/html/status.log - zapisywanie do pliku określonego w ścieżce

192.168.1.1-21 - zakres sprawdzanych ip

Teraz ustawiamy polecenie, aby wykonywało się automatycznie co 5 minut, w tym celu edytujemy plik /etc/crontab tudzież /var/spool/cron/root lub coś innego i dopisujemy linijkę:

0,5,10,15,20,25,30,35,40,45,50,55 * * * * nmap -sP -oN /home/httpd/html/status.log 192.168.1.1-21

Restartujemy crona

Za ok 5 minut sprawdzamy plik /home/httpd/html/status.log, który powinien wyglądać mniejwjęcej tak:

# Nmap (V. nmap) scan initiated 2.53 as: nmap -sP -oN /home/httpd/html/status.log 192.168.1.1-21
Host komp1 (192.168.1.1) appears to be up.
Host komp2 (192.168.1.2) appears to be up.
# Nmap run completed at Thu Jan 10 14:15:02 2002 -- 21 IP addresses (2 hosts up) scanned in 1 second

Teraz najważniejsza część, czyli jak to przetrawić by wyszły z tego obrazki na stronę ?

Wystarczy wstawić w odpowiednim mjejscu na stronie (z rozszerzeniem .php / .phtml / .php3) kod:

$baza = "/home/httpd/html/status.log";
$plik = file($baza);
$success = 0;
$sn = 0;
$en = count($plik);
do {
if(stristr($plik[$sn],"komp1")) {
$dataex = explode("|",$plik[$sn]);
$success++;
echo 'Wlaczony';
}
$sn++;
}
while($sn < $en);
if($success == 0) {
echo 'Wylaczony';
}
?>

Oczywiście w miejsce gdzie w kodzie jest komp1 wpisujemy odpowiednią nazwę z pliku status.log.

Pamiętaj o wpisaniu odpowiednich ścieżek dostępu do wszystkich plików