使用python libnmap模块,我有这个python代码:
def DiffScan(Old, New):
Added = Old.diff(New).added()
for i in Added:
anIP = i.split('::')[1]
print "IP for lookup is " + anIP + " of " + str(type(anIP))
anewhost = New.get_host_byid(anIP)
pprint.pprint(anewhost)
当我调用此函数时,我得到输出:
IP for lookup is X.X.X.X of <type 'str'>
None
IP for lookup is Y.Y.Y.Y of <type 'str'>
None
我的期望是,而不是&#34; none&#34;,我会得到类似的东西:
IP for lookup is Z.Z.Z.Z of <type 'str'>
NmapHost: [Z.Z.Z.Z () - up]
我不确定为什么对.get_host_byid()
的调用返回None而不是NMapHost
对象。也许我的anIP
字符串有问题,但我找不到错误。
答案 0 :(得分:0)
tl; dr:我错误地调用了diff函数。
更长的答案
libnmap diff函数没有任何问题。上面问题中的原始代码有一个逻辑错误,并且错误地调用了diff函数。它正在回归&#34;无&#34;因为查询的主机集不包含请求的主机,这是预期的行为。正确的电话应该是:
Added = New.diff(Old).added()
换句话说,在函数调用中交换两个变量的位置。然后调用
New.get_host_byid(anIP)
然后将正常工作。将其扩展到其他diff函数,删除主机的代码应为:
Removed = New.diff(Old).removed()
然后使用
Old.get_host_byid(anIP)
更改主机的代码应为
Changed = New.diff(Old).changed()
然后使用
New.get_host_byid(anIP)
未更改主机的代码应为
Unchanged = New.diff(Old).unchanged()
然后使用
New.get_host_byid(anIP)