DHCP Monitor ( Linux e MAC )

01 Marzo 2010

Quando in una rete (munita anche di accesso Wi-Fi) si comincano ad avere due o più pc sarebbe meglio tenere monitorata la situazione degli IP occupati nella rete, per fare un'analisi su che IP vengono utilizzati. Se poi abbiamo tutti i pc in rete con un IP statico è ancora più semplice scovare qualche potenziale intruso. Facciamola breve. Per realizzare un processo che controlli in automatico la presenza o meno di IP sulla nostra rete, ci servono 3 elementi: uno script, una lista di IP da pingare e il crontab. Cominciamo con il più semplice: la lista di IP. Non è altro che un file di testo nel mio caso, in cui c'è l'elenco degli IP che il nostro DHCP può assegnare ad un pc che si connette alla nostra rete (basta inserire per es: 192.168.1.1 fino a 192.168.1.255 ) Io ho creato l'elenco con Excel, il quale permette di creare una lista di numeri progressiva inserendo il primo ed il secondo valore. Trascinando la casella in basso, vi creerà l'elenco progressivo; non dovete fare altro che fermarvi al 255esimo valore, copiarlo ed incollarlo in un file che nel mio caso ho chiamato lista.txt

Script bash

#! /bin/bash
#Costanti
page_html="/home/server/dhcp_status.html"
lista="/home/server/lista.txt"
rm $page_html
echo ' server@luca-server | Amministrazione | DHCP Monitor' >> $page_html
echo '
DHCP Monitor
' >> $page_html if [ ! -f $1 ]; then echo "Il file specificato non esiste" exit 1 fi NUM_PACKET=2 for ipaddr in `cat $lista`; do if ping -c $NUM_PACKET $ipaddr &> /dev/null; then echo '
'$ipaddr 'ONLINE
' >> $page_html else echo '
'$ipaddr 'offline
' >> $page_html fi done
MAC OS X riesce ad interpretare gli script sh che girano su linux, proprio perchè al suo interno batte un cuore *nix Le directory che vedete indicate, sono ovviamente personalizzabili. Le ho inizializzate come costanti, così dovrete modificare solo questa parte:
#Costanti
page_html="/home/server/dhcp_status.html"
lista="/home/server/lista.txt"
Potete collocare lo script dove meglio credete, l'importante è che il file *.sh e il file lista.txt siano nella stessa directory!! Le altre parti personalizzabili sono queste:
echo ' server@luca-server | DHCP Monitor' >> $page_html
echo '
DHCP Monitor
' >> $page_html
echo '
'$ipaddr 'ONLINE
' >> $page_html echo '
'$ipaddr 'offline
' >> $page_html

Crontab

Una volto collocati i due file visti in precedenza nella medesima directory, dobbiamo impostare il sistema in modo da ripetere il controllo ciclicamente. Per farlo usiamo il crontab, uno strumento utilissimo presente sia su *nix che su MAC OS X Digitare da terminale crontab -e Indipendentemente dall'editor con cui verrà aperto il cron ( con vim, di default su MAC ho litigato un pò, ma dopo due o tre tentativi sono riuscito; dovete richiamare la modalità inserimento premendo ESC) inserite questa riga: Per *nix */10 * * * * /bin/bash PERCORSO_DELLOSCRIPT lista.txt Per MAC OS X */10 * * * * sh PERCORSO_DELLOSCRIPT lista.txt In questo modo lo script verrà eseguito ogni 10 minuti, più o meno il tempo che impiega a scansionare dal primo all'ultimo IP della lista fate bene attenzione che lista.txt è un parametro dello script, percui va scritto staccato di uno spazio dal percorso dello script. Nel mio caso avrò: */10 * * * * /bin/bash /home/luca/DHCPMONITOR/ipscan.sh lista.txt Per una dimostrazione potete dare un occhio qui: DEMO


X
THE END