如何使用python开发snmp协议监控程序

  如何使用python开发snmp协议监控程序。使用python能否开发snmp程序呢?答案是肯定的,本文将介绍如何搭建python开发snmp程序的步骤,以及使用python访问snmp接口的一个小实际的演示例子。

  简单的网络管理协议是软件中控制设备的最佳选择。更重要的是,软件访问是SNMP的实际目的。毫不奇怪,所有的监控系统都使用SNMP来监视和控制服务器和网络设备。在脚本中使用SNMP的强大功能将是非常棒的。因此,本pythonsmp教程将解释如何利用python开发SNMP程序。

  SNMP代表简单网络管理协议。它是管理服务器和远程设备(代理)之间的标准通信方式。SNMP的目标是让管理器了解(甚至更改)代理的信息。例如,管理器可以检查哪些接口启动,哪些接口关闭,或者更改远程设备的主机名。

Python SNMP Tutorial allows you to connect to a remote device with SNMPv2 and SNMPv3

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。

今天的文章就到这里了,后面会将会对pysnmp的具体接口和封装方式进行探讨。大家有对python在snmp方面好的库、或者案例欢迎一起交流和分享。喜欢和有用就点个赞吧~

 

  • 11
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Python可以利用SNMP协议读取交换机的信息。SNMP(Simple Network Management Protocol)是一种用于网络管理的协议,它允许管理者通过网络获取设备的运行状态、配置信息等。 Python提供了多个库用于实现SNMP协议的读取,其中最常用的是PySNMP。PySNMP是一个强大且易于使用Python库,可以用于通过SNMP获取交换机的信息。 使用PySNMP,我们可以通过以下步骤读取交换机的信息: 1. 安装PySNMP库:可以使用pip工具在命令行中执行"pip install pysnmp"来安装PySNMP库。 2. 导入必要的模块:在Python代码中,我们需要导入一些PySNMP相关的模块,如pysnmp.hlapi。 3. 配置SNMP连接:需要指定交换机的IP地址和SNMP团体名(community string)来建立SNMP连接。 4. 定义SNMP请求:可以使用getCmd或nextCmd函数来定义SNMP请求。getCmd用于获取单个对象的值,而nextCmd用于获取多个对象的值。 5. 处理SNMP响应:对于每个SNMP请求,我们需要处理返回的SNMP响应。可以使用for循环遍历每个响应,并提取所需的数据。 6. 打印或处理数据:根据需求,可以将获取到的交换机信息打印出来,或者进行其他的处理操作。 总结起来,Python利用SNMP协议读取交换机的步骤包括安装PySNMP库、导入模块、配置SNMP连接、定义SNMP请求、处理SNMP响应和打印/处理数据。通过这些步骤,我们可以方便地获取交换机的各种信息,如端口状态、MAC地址表、VLAN配置等。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值