Java Out Of Memory 压制组装机 matlotlib canal安装 cordova pip vue前端 git视频 jquery删除子元素 ceb转换成pdf在线转换 monkey安装 mysql配置远程连接 python迭代 python的str python写入txt文件 python学习方法 java在线学习 java方法重载 java实例变量 java获取现在时间 java中new java多线程处理 java读取文件 java删除 java函数调用 linux基础教程 怎么安装linux java游戏开发教程 键盘宏软件 python的用途 整站系统 刷声望 tar解压 abr文件 今日头条邀请码 jq改变css样式 igfxpers 图片转pdf软件 小米手环怎么连接手机 向日葵9
当前位置: 首页 > 学习教程  > 编程语言

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

2020/9/19 16:03:37 文章标签:

  如何使用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.使用什么库来开发snmp管理程序比较合适。

  现在主流的主要有net-snmp、pysnmp可以用来开发snmp管理程序。但是net-snmp模块在window环境安装起来特别复杂,安装数次都没有成功。随即探索新的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方面好的库、或者案例欢迎一起交流和分享。喜欢和有用就点个赞吧~

 


本文链接: http://www.dtmao.cc/news_show_200340.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?