Python 我有没有办法使用';nmap&x27;端口扫描仪,用于在我的Django应用程序上生成和输出结果

Python 我有没有办法使用';nmap&x27;端口扫描仪,用于在我的Django应用程序上生成和输出结果,python,django,linux,nmap,Python,Django,Linux,Nmap,我正在尝试在Django中创建一些网络应用程序,我想问的是:是否可以这样做:客户端类型的IP地址,然后服务器用“nmap”扫描它,然后结果传递给Django应用程序,然后我用它做一大堆事情 我只是想知道这是可能的,还是听起来很可笑?我的建议大致如下: pout,perr = subprocess.Popen(['nmap', '192.168.1.2', '-oX', '-'], shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIP

我正在尝试在Django中创建一些网络应用程序,我想问的是:是否可以这样做:客户端类型的IP地址,然后服务器用“nmap”扫描它,然后结果传递给Django应用程序,然后我用它做一大堆事情


我只是想知道这是可能的,还是听起来很可笑?

我的建议大致如下:

pout,perr = subprocess.Popen(['nmap', '192.168.1.2', '-oX', '-'], shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

xml_results = pout.read()
如果您稍微搜索一下,也会有一些nmapXML->Python dict脚本

这种方法有点问题——让我们称之为天真的方法,因为它不能很好地扩展,或者处理诸如机器不ping和nmap返回慢扫描(根据目标网络,这可能需要几个小时)


考虑创建一个异步运行nmap的服务器,该服务器可以向用户返回状态,并能够取消正在进行的扫描。

我的建议如下:

pout,perr = subprocess.Popen(['nmap', '192.168.1.2', '-oX', '-'], shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

xml_results = pout.read()
如果您稍微搜索一下,也会有一些nmapXML->Python dict脚本

这种方法有点问题——让我们称之为天真的方法,因为它不能很好地扩展,或者处理诸如机器不ping和nmap返回慢扫描(根据目标网络,这可能需要几个小时)

考虑创建一个异步运行nmap的服务器,该服务器可以向用户返回状态,并能够取消正在进行的扫描。

nmap有一个名为python nmap的python库(或包装器?)

您可以使用

pip安装python-nmap

您可以在Django中使用类似于
芹菜的库来使用它Nmap有一个名为python-Nmap的python库(或包装器?)

您可以使用

pip安装python-nmap

您可以使用类似于芹菜的库来在Django中使用它

当然,也可以使用google的“来自python的bash命令”之类的库
subprocess.Popen(['nmap',ip])
。我只是不太熟悉它的问题/陷阱;所以我不会写一个答案。当然,谷歌“来自python的bash命令”之类的
subprocess.Popen(['nmap',ip])
。我只是不太熟悉它的问题/陷阱;所以我不会写一个答案。关于现有技术,请看,一个为Nmap项目工作的谷歌暑期代码实习生的项目。如果您想浏览源代码,请参阅Alexandru的项目。有关现有技术,请参阅为Nmap项目工作的Google Summer of Code实习生的项目。如果您想浏览源代码,请参阅Alexandru的项目。