Nota: articolo di proprietà e apparso per la prima volta su OpenSkills.info – http://www.openskills.info
Sovente si ha l’esigenza di effettuare un’analisi di un determinato host protratta nel tempo e soprattutto programmata. Vediamo come realizzare uno script in python che ci permetta di esportare l’output di Nmap in formato html.
I requisiti per fare ciò sono:
- il portscanner nmap
- l’interprete python >= 2.3
- un webserver qualsiasi
Il webserver si occuperà di rendere accessibile la nostra pagina html via web mentre cron, tramite il nostro script, genererà la stessa ogni 5 minuti.
Lo script:
#!/usr/bin/python # Analisi di rete "programmata" # http://openskills.info - by mozako import os PATH = "/var/www/htdocs/" # qui inseriremo il percorso (e solo quello) dove salvare il file html; nel nostro caso /var/www/htdocs/ rappresenta la directory root del web-server Apache. RETE = "192.168.0.102" # L'host da monitorare andrà qui. NMAP = "/usr/bin/nmap -sT " + RETE # qui inseriremo il percorso completo di nmap seguito dalle opzioni per lo scanning scelte (si badi allo spazio finale); in questo caso si è optato per il semplice TCP connect() scan. file = open(PATH + "scan.htm",'w') # apriamo il file dove salvare l'output in scrittura. print >> file, "Network Info<br><hr>" cd = os.popen(NMAP) # startiamo nmap for line in cd.readlines(): file.write(line+ "<br>") file.close()
Modifichiamo il file /var/spool/cron/crontabs/root, in maniera da avviare lo script ogni 5 minuti, aggiungendo:
*/5 * * * * /percorso/scan.py &> /dev/null
Se tutto è filato liscio troveremo una pagina .htm accessibile tramite http://nostro_host/scan.htm ed aggiornata ogni 5 minuti !