python-nmap在SLES11上似乎有点小问题

无论适用于python2.x的python-nmap-0.1.4还是适用于python3.x的python-nmap-0.3.4,按照给出的范例,PortScanner在执行scan方法的时候总会在处理finished标签的时候报错。

>>> import nmap
>>> nm = nmap.PortScanner()
>>> nm.scan('1.2.3.4','21-255,1521,5901,5902')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.4/site-packages/nmap/nmap.py", line 302, in scan
    nmap_err_keep_trace = nmap_err_keep_trace)
  File "/usr/local/lib/python3.4/site-packages/nmap/nmap.py", line 369, in analyse_nmap_xml_scan
    'elapsed':dom.getElementsByTagName("finished")[0].getAttributeNode('elapsed').value,
AttributeError: 'NoneType' object has no attribute 'value'
>>>


以python3为例,如果把369行屏蔽,不处理elapsed属性,那么后面的执行就会完全正常,只是扫描耗时没有记录了(事实上后面发现调用nmap获得的信息里间接有这个信息,只是不以“finished标签的elapsed属性”这个形式,而是通过起止时间间接给出的)。

读了一下nmap.py,发现scan方法调用了自身的analyse_nmap_xml_scan方法,于是修改analyse_nmap_xml_scan方法,直接把解析的dom对象返回,于是scan方法也返回了该对象,调用dom的toxml()方法,结果当中就根本没有“elapsed”这个词。

SLES11SP3环境,nmap版本是4.75。后来换了个CentOS7的环境,nmap-6.40,发现就一切正常了。看来后来的某个nmap版本开始,把elapsed这一项以属性的形式直接返回了。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值