如何使用python开发snmp协议监控程序。使用python能否开发snmp程序呢?答案是肯定的,本文将介绍如何搭建python开发snmp程序的步骤,以及使用python访问snmp接口的一个小实际的演示例子。
简单的网络管理协议是软件中控制设备的最佳选择。更重要的是,软件访问是SNMP的实际目的。毫不奇怪,所有的监控系统都使用SNMP来监视和控制服务器和网络设备。在脚本中使用SNMP的强大功能将是非常棒的。因此,本pythonsmp教程将解释如何利用python开发SNMP程序。
SNMP代表简单网络管理协议。它是管理服务器和远程设备(代理)之间的标准通信方式。SNMP的目标是让管理器了解(甚至更改)代理的信息。例如,管理器可以检查哪些接口启动,哪些接口关闭,或者更改远程设备的主机名。
SNMP代理在一个特殊的表MIB中准备管理器可以读取或更改的所有信息。MIB是一个类似于树的结构,树中的每个节点都将由一个数字表示。例如,1.3.6.1.2.1.1.1代表系统描述。如果你想知道这个数字链是从哪里来的,这就是整个树结构!事实上,每个数字都与一个名字有关。
PySNMP是Python的开源模块。与telnet或HTTP不同,Python本身却不实现SNMP。毕竟,只需要网络和系统工程师,而不是工厂里的任何Python开发人员需要了解。PySNMP很好地弥补了Python的不足。实际上,它允许您使用任何版本的SNMP,无论是作为代理还是作为管理器。创建代理意味着您正在创建一个应用程序或设备,所以我们今天就不讨论这个问题。但是,我们将检查如何使用PySNMP管理远程设备。
本文分为几个方面:
1.python中使用什么库来开发snmp管理程序比较合适。
现在主流的主要有net-snmp、easysnmp、pysnmp可以用来开发snmp管理程序。但是net-snmp模块在window环境安装起来特别复杂,安装数次都没有成功。而easysnmp好像是基于net-snmp协议的。随即探索新的python库,发现pysnmp库比较友好。使用pip就可以安装,随即选用pysnmp。
2.安装pysnmp
像前面说的,安装pysnmp非常简单。只需要
pip install pysnmp
即可。安装完成后,使用import pysnmp进行检查是否满足需求。
3.如何在window操作系统启用snmp
snmp协议是用来进行监控设备的。如果我们手头没有设别,那应该如何监控设备进行调试呢? 其实我们的pc也可以看作作为一个设备。作为一个被管理的设备,只需要在window上开启代理程序就能够被监控的设备进行调试了。
在window中启用snmp协议的方法
1)点击windows键,选择控制面板
2)在程序中选择程序
3)在打开的页面中左侧选择打开或关闭windows功能
4)在打开的页面中勾选简单网络管理协议(snmp),之后点击确认,即将snmp安装完毕
5)在计算机管理页面中,找到服务和应用程序,打开系统服务列表,找到snmp services,右键属性
6)在snmp属性页面中,找到安全选项卡,在接受的社区名称中,选择天添加,配置社区名称,如:public
7)在接受来自下列主机的snmp数据包中,点击添加对应的管理主机的地址,或者勾选接受来自任何足迹的snmp数据包,点击确认,之后重启snmp服务即完成snmp服务的配置
8)最后,记得将snmp服务进行启用。
4.开发一个获取开发机器运行状态的监控示例程序
from pysnmp.entity.rfc3413.oneliner import cmdgen
def snmpget():
cg = cmdgen.CommandGenerator() ##获得CommandGenerator对象
errorIndication, errorStatus, errorIndex, varBinds = cg.getCmd(
#0代表v1,1代表v2c
cmdgen.CommunityData('myagent', 'public', 1), ##社区信息,my-agent ,public表示社区名,1表示snmp v2c版本,0为v1版本
cmdgen.UdpTransportTarget(('127.0.0.1', 161)),##这是传输的通道,传输到IP 192.168.70.237, 端口 161上(snmp标准默认161 UDP端口)
'.1.3.6.1.2.1.1.1.0' ##传送的OID,个人认为MIB值
)
print(str(varBinds[0][1])) ##varBinds返回是一个stulp,含有MIB值和获得值
def runit(loop=1):
for i in range(loop):
snmpget()
#print i
if __name__ == "__main__":
runit(loop=1)
这个示例程序访问的mib值,是设备的描述信息,在我的电脑上的输出是:
“Hardware: Intel64 Family 6 Model 45 Stepping 7 AT/AT COMPATIBLE - Software: Windows Version 6.1 (Build 7601 Multiprocessor Free)”
5.辅助snmp调试的工具
辅助工具当仁不让的是mib browser了。MIB浏览器是工程师管理支持SNMP的网络设备和应用程序的不可或缺的工具。iReasoning MIB浏览器允许用户加载标准的、专有的MIB,甚至一些格式错误的MIB。它还允许它们发出SNMP请求来检索SNMP代理的数据,或对代理进行更改。内置陷阱接收器可以根据其规则引擎接收和处理SNMP trap。