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

2024-06-07 23:32:58 发布

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

我一直在直接从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

然后,只要转储hostlist,它看起来就是我所希望的那样,但是如果您尝试将其插入hosts参数,它会显示“未能解析”alltheiplisted“警告:未指定目标,因此扫描了0个主机。

有没有人有什么好主意来解决这个问题?可能是把IPs从文件中取出?如果一根绳子坏了,我也会遇到同样的问题。。。


Tags: 命令行列表参数scanallitemnmapsp
1条回答
网友
1楼 · 发布于 2024-06-07 23:32:58

如果你去掉逗号,它会起作用的。列出的多个主机之间只有一个空格。

使用示例:

import nmap
nm = nmap.PortScanner()

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

相关问题 更多 >

    热门问题