从libnmap调用get\u host\u byid将返回“None”,而不是主机对象

2024-10-04 03:20:47 发布

您现在位置:Python中文网/ 问答频道 /正文

使用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

我的期望是,我得到的不是“无”,而是:

IP for lookup is Z.Z.Z.Z of <type 'str'>
NmapHost: [Z.Z.Z.Z () - up]

我不确定为什么对.get_host_byid()的调用返回None而不是NMapHost对象。也许我的anIP字符串有问题,但我找不到错误


Tags: ofipnonehostaddednewforget
1条回答
网友
1楼 · 发布于 2024-10-04 03:20:47

热释光;我错误地调用了diff函数

更长的答案

libnmap diff函数没有问题。上面问题中的原始代码有一个逻辑错误,错误地调用了diff函数。它返回“None”,因为查询的主机集不包含请求的主机,这是预期的行为。正确的呼叫应该是:

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)

相关问题 更多 >