如果管理网络设备很多,不可能靠人力每天去登录设备去查看是否在线。所以,可以利用python脚本通过每天扫描网络中的在线设备。可以部署在服务器上做成定时任务,每天发送AAA巡检报告。
下面是我写的一个python练手小程序。用来扫描一个网段中的在线主机,并尝试AAA去登录。统计一个大网段内可以成功aaa登录的主机。
注意:
该程序只是测试小程序,还有些小bug需要解决。不是通用的程序。主要提供一个大致思路。
主要用到了python-nmap, paramiko库。
程序大概思路:
- 利用nmap扫描一个指定网段,只做ping扫描,所以前提所管理的设备中ping必须开启。获取存活设备IP列表。
- 利用paramiko库模拟ssh去登录个IP,如果登录成功,返回设备名称,并及将设备名称和对应ip写入文件。
代码示例:
1 | # -*- coding: utf-8 -*- |
这个小程序例子,只是一个大概思路。
可以添加或则改善的思路:
- 比想要获取设备名,可以通过snmp,知道ip地址和snmp读团体名就可以直接获取。
- 可以将获取到的数据存入数据库中,从而可以做更的事情。
- 通过类似代码,也可以实现每天去设备上备份网络配置等功能。
- 可以将利用扫描结果,添加更多处理逻辑,生成每日巡检日报,通过邮件或者短信发送。
nmap库使用:
nmap工具使用可参考: nmap扫描工具学习笔记)
如果在windows上写nmap库,有两个事要解决。
第一步:安装nmap软件
因为在python程序中,nmap包所调用的是nmap可执行程序,所以必须先安装nmap软件。nmap下载地址: https://nmap.org/download.html
第二步: 需要在nmap库中文件的init方法中添加的nmap.exe的路径。
不然会报错,提示找不到nmap。
在nmap.py的class PortScanner()中的__init__()中更改:
1 | def __init__(self, nmap_search_path=('nmap', '/usr/bin/nmap', '/usr/local/bin/nmap', '/sw/bin/nmap', '/opt/local/bin/nmap',r"D:\software\nmap-7.80\nmap.exe")): |
主要添加了‘r”D:\software\nmap-7.80\nmap.exe”, nmap.exe可执行文件路径。
1 | import nmap |
其他使用示例:
1 | #!/usr/bin/env python |
参考文档: