我的python脚本中有一个我的ip列表,我正在尝试对每个IP运行nmap扫描以查找打开的端口。我不断收到此错误:
Traceback (most recent call last):
File "rscan.py", line 33, in <module>
main()
File "rscan.py", line 30, in main
vulnscan(nm, L)
File "rscan.py", line 6, in vulnscan
for port in nm[item].all_tcp():
File "build/bdist.linux-x86_64/egg/nmap/nmap.py", line 567, in __getitem__
KeyError: u'IP ADDRESS HERE'
(不过,在"此处的 IP 地址"部分中有一个实际的 IP 地址。
我尝试的代码扫描部分是:
for item in L:
for port in nm[item].all_tcp():
state= nm[item]['tcp'][port]['state']
if state== 'open':
print state
"L"是包含我的IP地址的列表。
使用 nmap 扫描一小群 IP 地址以查找开放端口的正确方法是什么?
像这样,基于你的代码:
for item in L:
if item in nm.all_hosts():
for port in nm[item].all_tcp():
state = nm[item]['tcp'][port]['state']
if state == 'open':
print state
检查指定的ip
地址是否在nm.all_hosts()
中(返回ips
列表),使您可以在事后安全地查询nm[item]
。
请注意,您可以通过简单地将 L 列表与 nm.all_hosts() 返回的 IP 地址列表相交来使这段代码更干净一些:
items = list(set(L) & set(nm.all_hosts()))
for item in items:
for port in nm[item].all_tcp():
state = nm[item]['tcp'][port]['state']
if state == 'open':
print state