资产管理探测流程
- 存活探测: 获取局域网内存活的IP列表
- 主机探测: 获取系统版本(SN、版本、MAC地址)
- 主机关系探测: 识别宿主主机和虚拟机的关系
- 网络设备的探测: 探测网络设备信息(SN、设备名等),使用snmp协议
- 其他设备的探测:
主机存活探测模块和工具
Nmap探测工具
Nmap,也就是Network Mapper,最早是Linux下的网络扫描和嗅探工具包。是一款用于网络发现和安全审计的网络安全工具。
- 主机发现 - 识别网络上的主机。例如,列出响应TCP和/或ICMP请求或打开特定端口的主机。
nmap -n -sP 172.25.254.10
nmap -n -sP 172.25.254.0/24
- 端口扫描 - 枚举目标主机上的开放端口
# Nmap默认端口的扫描范围1-10000
nmap -n -p 172.25.254.10
# 具体指定要扫描的端口为50-80
nmap -n -p50-80 172.25.254.10
# 具体指定要扫描的端口为22和80
nmap -n -p22,80 172.25.254.10
- OS检测 - 确定网络设备的操作系统和硬件特性。
nmap -O 172.25.254.10
查看172.25.254.10这台主机是否开启?
nmap -sP -PE 172.25.254.10
查看172.25.254.0/24局域网内存活的主机信息及存活主机个数
nmap -sP -PE 172.25.254.0/24
Nmap的Python操作接口: python-nmap
首先需要安装python端的nmap模块
pip3 install python-nmap
视图层的实现
代码全部卸载views.py过于冗余,这里新建utils.py代码用于存放调用
#utils.py
import nmap
def get_active_hosts(host='172.25.254.10'):
# 实例化对象, portScanner()类用于实现对指定主机进行端口扫描
nm = nmap.PortScanner()
# 以指定方式扫描指定主机或网段的指定端口
result = nm.scan(hosts=host, arguments='-n -sP')
# print("扫描结果: ", result)
# 返回的扫描具体的nmap命令行
# print("nmap命令行: ", nm.command_line())
# 返回nmap扫描的主机清单,格式为列表类型
# print("主机清单: ", nm.all_hosts())
return nm.all_hosts()
##测试:
if __name__ == '__main__':
get_active_hosts()
执行结果:
/usr/bin/python3.6 /root/PycharmProjects/CMDB/hostinfo/utils.py
扫描结果: {'nmap': {'command_line': 'nmap -oX - -n -sP 172.25.254.10', 'scaninfo': {}, 'scanstats': {'timestr': 'Sat Aug 1 06:57:28 2020', 'elapsed': '0.00', 'uphosts': '1', 'downhosts': '0', 'totalhosts': '1'}}, 'scan': {'172.25.254.10': {'hostnames': [{'name': '', 'type': ''}], 'addresses': {'ipv4': '172.25.254.10'}, 'vendor': {}, 'status': {'state': 'up', 'reason': 'localhost-response'}}}}
主机清单: ['172.25.254.10']