Python实现数通设备端口使用情况监控实例
作者:guoyh 时间:2021-02-09 23:56:41
本文实例讲述了Python实现数通设备端口使用情况监控的方法。分享给大家供大家参考。具体如下:
最近因工作需要,上面要求,每天需上报运维的几百数通设备端口使用情况【】,虽然有现成网管监控工具监控设备状态,但做报表,有点不方便,特写了个小脚本。上传的,为半成品可用程序
注:测试运行于ubuntn,需安装snmpwalk工具,
目标数通设备,需做好相关snmp配置
#/usr/bin/python
#coding:utf-8
import os,sys
import re
from pprint import pprint
#甯歌鍘傚鏁伴€氳澶嘙IB鍊?
MIB = {
'public':{
'ports':{
'string':'.1.3.6.1.2.1.2.2.1.2',
'status':'.1.3.6.1.2.1.2.2.1.8', #2 down
}
},
'huawei':{
},
'cisco':{
}
}
#绔彛鐘舵€佽浆鎹?
def portStatus(_s):
if int(_s)==2:
return 'down'
elif int(_s)==1:
return 'up'
else:
return 'none'
#鎵ц绯荤粺鍛戒护snmpwalk璋冪敤
def snmpwalk(host,publicKey,iso):
return [i.strip() for i in os.popen('/usr/bin/snmpwalk -c %s -v 2c %s %s'%(publicKey,host,iso)).readlines()]
def getPorts(_ip,_public,option):
if option == 'ports':
postsString = (j.split('=')[1].split(':')[1].replace('"','').strip() for j in snmpwalk(_ip,_public,MIB['public']['ports']['string']))
postsStatus = (int(j.split('=')[1].split(':')[1].strip()) for j in snmpwalk(_ip,_public,MIB['public']['ports']['status']))
return zip(postsString,postsStatus)
else:
print('on this commmnad')
publicKey = 'hi' #sunmp public key
HOSTS={
'10.221.98.2':{'type':'switch','origin':'quidway','public':publicKey},
'10.221.98.3':{'type':'switch','origin':'quidway','public':publicKey},
'10.221.97.108':{'type':'firewall','origin':'h3c','public':publicKey},
'10.231.98.233':{'type':'switch','origin':'cisco','public':publicKey},
}
if __name__ == '__main__':
for i in HOSTS.keys():
for host,status in getPorts(i,HOSTS[i]['public'],'ports'):
print("%s\t%s\t%s"%(i,host.ljust(30),portStatus(status).ljust(20)))
print(''.ljust(50,'#'))
运行结果:
root@ubuntn12:/tmp# python snmpwalk.py
10.221.98.2 InLoopBack0 up
10.221.98.2 NULL0 up
10.221.98.2 GigabitEthernet0/0/0 down
10.221.98.2 Aux0/0/1 down
10.221.98.2 Vlanif100 up
10.221.98.2 Eth-Trunk1 down
10.221.98.2 Eth-Trunk1.32 down
10.221.98.2 Eth-Trunk1.50 down
10.221.98.2 Eth-Trunk1.60 down
10.221.98.2 Eth-Trunk1.70 down
10.221.98.2 Eth-Trunk1.80 down
10.221.98.2 Eth-Trunk1.100 down
10.221.98.2 Eth-Trunk1.110 down
.......
希望本文所述对大家的Python程序设计有所帮助。
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Python使用定时调度任务的方式
![](https://img.aspxhome.com/file/2023/9/76939_0s.jpg)
laravel学习教程之存取器
python代码实现小程序登录流程时序总结
![](https://img.aspxhome.com/file/2023/8/68928_0s.jpg)
Windows下Python使用Pandas模块操作Excel文件的教程
![](https://img.aspxhome.com/file/2023/1/69021_0s.jpg)
把你的数据库置于版本控制之下
用javascript实现Base64编码
使用python语言,比较两个字符串是否相同的实例
Go语言从单体服务到微服务设计方案详解
![](https://img.aspxhome.com/file/2023/8/92038_0s.jpg)
禁用JavaScript脚本来复制网站内容
laravel多视图共享数据实例代码
绿色下划线的简洁CSS导航代码
![](https://img.aspxhome.com/file/UploadPic/20079/17/2007917125420230s.jpg)
opencv对多种颜色小球的形状及位置判断方式
![](https://img.aspxhome.com/file/2023/9/78479_0s.png)
python 获取毫秒数,计算调用时长的方法
Python入门教程3. 列表基本操作【定义、运算、常用函数】 <font color=red>原创</font>
ThinkPHP5中如何使用redis
![](https://img.aspxhome.com/file/2023/9/55499_0s.png)