Wie überspringe ich eine IP bei Verwendung von Nmap in Python?
-
12-12-2019 - |
Frage
Ich verwende nmap in Python und versuche, das Netzwerk mit einer Textdatei zu scannen.Alle Scanbereiche befinden sich in einer Textdatei, etwa so:
192.168.1.1-100 192.168.1.120-200 ...
Sagen wir jedoch, wenn der Scan den Host 192.168.1.3 nicht gefunden hat, weil er offline war.Das Programm stürzt ab.Gibt es eine Möglichkeit, wie ich diesen Absturz umgehen kann?Kann ich so etwas wie Try / Catch verwenden?
Danke, Eichelhäher
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')
Dies ist das Codebeispiel
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'}
Das ist der Fehler
Lösung
nmap
nimmt zwei Argumente für den Ausschluss. --exclude
nimmt Hostnamen an und --excludefile
nimmt eine Datei entgegen, die den Namen der Hosts enthält, die ausgeschlossen werden müssen.Verwenden Sie eine davon nach Bedarf.Weitere Informationen zum Festlegen des Ziels finden Sie in der Mensch Seite.
Hier ist mein Testergebnis -
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': ''}}}
>>>
Sie können try-catch verwenden-
try:
nm.scan(content[counter], '517', '-sU -sT')
except:
#handle exception...
Da Sie nicht wissen, welche Server ausgefallen sind, können Sie den Server anpingen, bevor Sie mit dem Nmap-Scan fortfahren.