我正在尝试在 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字典脚本
。这种方法存在一些问题 - 让我们称之为天真的方法,因为它不能很好地扩展,或者处理诸如机器不ping和nmap回退到慢速扫描之类的事情(根据目标网络,可能需要几个小时)
考虑使服务器异步运行 nmap 并可以向用户提供状态 - 以及取消正在进行的扫描的能力。
Nmap在 https://pypi.python.org/pypi/python-nmap 有一个名为python-nmap的python库(或包装器?)。
您可以使用以下方法安装它
pip install python-nmap
你可以使用像celery
这样的库在 Django 中使用它