Python-地图:builtins.KeyError 在 nmap.py 的第 568 行

Python-map: builtins.KeyError in line 568 of nmap.py

我想要一个脚本来扫描我的本地网络以查找任何打开了 SSH 登录的人。我有一个 运行domly 生成本地 IP 并查看 IP 是否为 "up" 的脚本。但是,无论我如何更改和 fiddle 我的代码,我都会得到一本字典 "builtins.KeyError" 。只有当我使用我的 ipGenerator 时才会出现此错误,其中 returns 一个 ip 地址作为字符串。如果我手动将 IP 地址输入到变量 ip 中,它运行良好。我正在使用 WingIDE,我什至在有问题的行停止了代码并手动输入生成的 ip 变量和代码 运行 正常。然而,只要变量引用 运行dom IP 生成器函数,代码就会失败并返回 builtins.KeyError: [generated ip address]。失败的代码行是 port22 = nm[ip]['tcp'][22]['state']。这是到目前为止的代码:

import nmap
from generate_ip import ipPick

nm = nmap.PortScanner()

ip = ipPick()
nm.scan(ip, '22')
port22 = nm[ip]['tcp'][22]['state']

有趣的是,nm.scan(ip, '22') 行完全可以找到。但是当问题代码行访问字典条目时,它似乎失败了。关于为什么函数失败而不是手动输入有什么想法吗?

谢谢。

您正在尝试使用 nm -- PortScanner 对象 -- 作为字典。

>>> type(nm)
<class 'nmap.nmap.PortScanner'>

改用这个:

>>> scanned=nm.scan(ip, '22')
>>> scanned.keys() # list keys
dict_keys(['nmap', 'scan'])
>>> scanned['scan'][ip]['tcp'][22]['state']
'closed'