A differenza degli articoli scritti finora su AreaNetworking, questo non tratterà tematiche strettamente legate al mondo del Networking, bensì al mio script open source rilasciato in questi giorni su google code: WhoisUP.
Come si può intuire dalla parola stessa esso permette di verificare quali tra gli hosts definiti, sono up o down.
Sicuramente molti di voi potrebbero domandarmi “come mai scrivere uno script nuovo quando su internet se ne trovano in quantità?” … beh le ragioni sono moltemplici ma 2 sono i punti principali che mi hanno spinto a dedicare il tempo libero a questo script:
- Navigando su internet si trovano molteplici soluzioni ma queste spesso:
- Non permettono di tenere costantemente monitorati gli host, se non con un delay superiore al minuto (limite spesso imposto da crontab…).
- Oltre a controllare ininterrotamente la ‘raggiungibilità ‘ di uno o piu’ hosts, propongono features come monitoraggio (bandwith, RAM, Hard disk, …), syslog server, SLA, etc… che spesso oltre a non essere richieste dall’utente finale (si è vero spesso è sufficiente disabilitare la feature stessa), confondono le idee (cosa mi conviene controllare? con quali delay?).
- Hanno un costo.
- Semplicemente perchè mi piace programmare :)
Detto questo, WhoisUP è uno script open source (GPLv2) che permette di monitorare hosts di varia natura (server, pc, switch, router, nas, etc…) mediante pacchetti ICMP di tipo echo request, mostrando (con funzionalità AJAX) lo stato dei singoli su pagina web e inviando in caso di fault, notifiche di varia natura (popup, suoni, mail, syslog message).
Durante la fase di progettazione, mi sono domandato se generare pacchetti icmp tramite funzionalità interne del PHP (socket_create) o affidarmi a software esterni. Dopo una serie di prove la mia scelta si è indirizzata su Nmap, sia perchè la stintassi e l’output generato su file XML è uguale indifferentemente dal sistema operativo, sia perchè come tutti sanno Nmap nasce anche per questo.
Fatta questa premessa posso spiegare, a grandi linee, come funziona lo script.
Una volta definita la lista degli hosts che si vuole monitorare tramite interfaccia amministrativa, lo script, mediante la funzione di php exec() esegue la scansione con nmap e redirige l’output in un file XML. Quest’ultimo viene poi letto da WhoisUP che lo rielabora generando dinamicamente la pagina web. Lo script durante il ‘parsing’ del file XML verifica anche se vi sono dei down, e se richiesto dall’utente, può generare dei popup, caricare dei suoni, inviare email e/o inviare messaggi syslog. Ovviamente come l’utente finale viene avvisato mediante mail o syslog message del fault di un host, viene anche notificato anche quando un host ritorna up.
Ora passiamo all’utilizzo vero e proprio di WhoisUP.
Come detto in precedenza il software funziona senza problemi sia su piattaforma linux che windows; gli unici requisiti sono:
- Un web server (testato sia su ISS che su Apache)
- PHP 5 >= 5.1.0
- Nmap (testato con release 5.51)
Una volta verificato che il sistema supporti tali prerequisiti, passiamo alla fase di installazione:
1. Scaricare lo zip contenuto nel sito http://code.google.com/p/whoisup/
2. Decomprimere i file all’interno della cartella ‘web’
3. Assegnare alle cartelle ‘TMP’ e ‘conf’ e ai files contenuti in esse, permessi 777 (per sistemi linux) o writable (per sistemi windows)
4. Accedere alla pagina web htttp://[tuo-server]/whoisup/admin.php
5. Loggarsi con la password ‘whoisup’
6. Compilare i vari campi richiesti e cambiare la password
Fatto ciò occorre eseguire lo script in background, per far in modo che si continui a monitorare gli hosts; per far ciò si hanno due possibilità:
- Mediante command line: eseguire il seguente comando con diritti amministrativi o di root:
php \[tuo-path]\whoisup\core.php [tua-password]
- Mediante browser: chiamare la pagina web
http://[tuo-server]/whoisup/core.php?secret=[tua-password]
Metodo non consigliato, in quanto in questo caso il servizio web necessita di diritti amministrativi o di root
L’installazione di WhoisUP è conclusa. Per vedere lo stato attuale degli host è sufficiente chiamare la pagina web: http://[tuo-server]/whoisup/
Alcune puntualizzazioni:
- All’interno della interfaccia di amministrazione esiste il campo ‘email to’. Questo identifica le email che riceveranno gli avvisi di host down. Per poter inserire piu’ di una email è sufficiente inserire le email una sotto l’altra. Per esempio:
[email protected]
[email protected]
[email protected] - All’interno della interfaccia di amministrazione esiste il campo ‘IP Address list’. Esso identifica gli indirizzi IP che lo script dovrà controllare. Esso dovrà rispettare la seguente sintassi:
192.168.1.1 # my-route
8.8.8.8 # google-dns
123.123.123.123 # test-host - La pagina core.php non deve essere mai interrotta. Essa è il cuore di WhoisUP. Se si dovesse arrestare, non verranno piu’ inviati alert e la pagina http://[tuo-server]/whoisup/ non verrà più aggiornata!
- La pagina index.php è utilizzata esclusivamente per visualizzare lo stato degli hosts. Se questa viene chiusa l’utente riceverà comunque email e syslog message di avviso.
- Attaulmente lo script è testato solo con indirizzamento IPv4. Non escludo, nelle prossime release, un pieno supporto anche all’IPv6.
Scrennshot
Home user con popup attivo
Home user senza popup attivo
Interfaccia admin
Il programma è completamente gratuito ed è scaricabile al seguente link http://code.google.com/p/whoisup/
Ovviamente ogni consiglio o critica è sempre ben accetta :-)