使用python nmap模块扫描先前扫描生成的主机

时间:2014-07-16 15:59:34

标签: python nmap

我一直在使用python命令行中的模块来试图弄清楚它是如何工作的,并开始拼凑我想写的脚本将如何工作。我想做的是首先进行简单的主机发现扫描,例如-n -sP -PE,然后使用all_hosts()函数生成实际端口扫描的主机列表。所以,如果我这样做......

import nmap
nm = nmap.PortScanner()

nm.scan(hosts='XXX.XXX.XXX.X/24', arguments='-n -sP -PE')

然后nm.all_hosts()为我提供了我正在寻找的内容,这是扫描找到的所有活动主机的缩短列表。现在,我遇到的问题是将其传递到下一次扫描中。如果您只是做

之类的事情
hostlist = nm.all_hosts()
nm.scan(hosts=hostlist etc)

然后它抱怨无法使用hosts参数的列表。好的,有道理。所以我试着把它逗号分开,所以它们会显示为aaa.aaa.aaa.aaa,bbb.bbb.bbb.bbb等,这样做......

hostlist = ""
for item in nm.all_hosts():
    hostlist = item + ", " + hostlist

然后,只是转储主机列表,它看起来就像我喜欢它,但如果你试图将其插入到hosts参数中,它会说“无法解决”所有列出的内容“警告:没有指定目标,所以0主持人扫描过。

有没有人对如何解决这个问题有任何好的想法?也许转储IP然后从文件中提取它们?似乎如果字符串不起作用我会遇到同样的问题...

1 个答案:

答案 0 :(得分:2)

如果删除逗号,它将起作用。列出了多个主机,它们之间只有一个空格。

使用示例:

import nmap
nm = nmap.PortScanner()

hostlist = ' '.join(nm.all_hosts())
nm.scan(hosts=hostlist, arguments='-n -sP -PE')