Question

J'utilise nmap en python et j'essaie d'analyser le réseau à l'aide d'un fichier texte.Toutes les plages de numérisation sont dans un fichier texte, comme ceci :

192.168.1.1-100 192.168.1.120-200 ...

Cependant, disons si l'analyse n'a pas trouvé l'hôte 192.168.1.3, car il était hors ligne.Le programme va planter.Existe-t-il un moyen de contourner ce crash ?Puis-je utiliser quelque chose comme Try/Catch ?

Merci, Jay


counter = 0
with open('range.txt') as rangefile:
    content = rangefile.readlines()

while counter < len(content):
    nm = nmap.PortScanner()
    #define the nmap scan here
    nm.scan(content[counter], '517', '-sU -sT')

Ceci est l'exemple de code

  File "c:\...\nmapscan.py", line 63, in <module> therehost = Host.objects.get(ipv4_address=hosts) va.assessment.models.DoesNotExist: Host matching query does not exist. Lookup parameters were {'ipv4_address': u'134.250.16.103'}

C'est l'erreur

Était-ce utile?

La solution

nmap prend deux arguments pour l’exclusion. --exclude prend le(s) nom(s) d'hôte et --excludefile prend un fichier contenant le nom des hôtes qui doivent être exclus.Utilisez-en un selon vos besoins.Pour en savoir plus sur la définition d'un objectif, consultez le homme page.

Voici le résultat de mon test -

Python 3.2.3 (default, May  3 2012, 15:54:42) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import nmap
>>> nm=nmap.PortScanner()
>>> nm.scan('134.250.16.103','517', '-sU -sT')
{'nmap': {'scanstats': {'uphosts': '0', 'timestr': 'Sat Jul 28 12:54:27 2012', 'downhosts': '1', 'totalhosts': '1', 'elapsed': '3.06'}, 'scaninfo': {'udp': {'services': '517', 'method': 'udp'}, 'tcp': {'services': '517', 'method': 'connect'}}, 'command_line': 'nmap -oX - -p 517 -sU -sT 134.250.16.103'}, 'scan': {'134.250.16.103': {'status': {'state': 'down', 'reason': 'no-response'}, 'hostname': ''}}}
>>> 

Vous pouvez utiliser try-catch-

try:
   nm.scan(content[counter], '517', '-sU -sT')
except:
   #handle exception...

Comme vous ne savez pas quels serveurs sont en panne, vous pouvez envoyer une requête ping au serveur avant de procéder à l'analyse nmap.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top