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 !