从libnmap调用get_host_byid会返回"无"而不是主机对象

时间:2017-07-28 13:40:41

标签: python nmap

使用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字符串有问题,但我找不到错误。

1 个答案:

答案 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)