我一直在直接从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)
然后,它抱怨无法为主机参数使用列表。好吧,有道理。因此,我尝试将其分隔开逗号,以便通过执行以下操作将它们显示为aaa.aaa.aaa.aaa,bbb.bbb.bbb.bbb等。
hostlist = ""
for item in nm.all_hosts():
hostlist = item + ", " + hostlist
然后,仅转储主机列表,它看起来就和我想要的一样,但是如果您尝试将其插入hosts参数,它会显示“无法解析“ alltheipslisted”警告:未指定目标,因此扫描了0个主机。
有人对此有什么好主意吗?也许转储IP然后从文件中提取IP?如果字符串不起作用,似乎会遇到相同的问题...
如果删除逗号,它将起作用。列出了多个主机,它们之间只有一个空格。
使用示例:
import nmap
nm = nmap.PortScanner()
hostlist = ' '.join(nm.all_hosts())
nm.scan(hosts=hostlist, arguments='-n -sP -PE')
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句