python netsnmp_在Ubuntu18.04中关于Python使用netsnmp进行snmp编程

  • Post author:
  • Post category:python


关于snmp的开发,netsnmp目前的最新版本是5.7.3。 为了支持python的开发,网上的文章看了不少,走了不少弯路,所以总结一下,和大家共享。

第一部分: 安装snmp程序以及服务。

在Ubuntu中安装snmp的支持,有两种方法,第一种是直接通过apt-get进行安装。第二种是从netsnmp官网下载源码net-snmp-5.7.3.tar.gz,进行编译安装。

本人对于第二种方法,查阅了网络上的方法不胜列举,很遗憾,最后还是没有成功过,所以在这里推荐第一种。

第一步,安装snmpd,snmp,和snmp-mibs-downloader

#snmpd是一个监听snmp服务的进程,绑定在某个端口上,等待来自请求者的SNMP的请求,进行处理,返回信息给请求者。

#snmp就是一个请求者的snmp命令集。

#snmp-mibs-downloader

如下,就是安装的命令:

~$sudo apt-get install snmp

~$sudo apt-get install snmpd

~$sudo apt-get install snmp-mibs-download

第二步,就是启动snmpd服务

~$sudo service snmpd restart

最后,测试以下是否成功

~$snmpwalk -v 2c -c public localhost

如果数据返回正确,那么就表示安装的snmp已经可以正常使用了。

第二部分:安装netsnmp对应的python编程包。

这里主要是安装netsnmp-py,https://pypi.org/project/netsnmp-py/.

首先,安装对应的依赖库。

~$sudo apt-get install libsnmp30 libsnmp-dev libczmq-dev

# libsnmp-dev libczmq-dev名字不能错,否则就找不到了。

其次,安装pyzmq,pyczmq. http://pyzmq.readthedocs.io/en/latest/index.html

~$sudo pip install pyczmq

接下来,安装netsnmp-py就大功告成。

~$sudo pip install netsnmp-py

最后,就是测试一下,netsnmp-py的函数是否在python在程序中可用。

#netsnmp-py中,提供了一个SNMPSession的类,此类给出了三个基本函数get/getnext/walk。

具体可以参看: usr/local/lib/python3.6/dist-packages/netsnmp/__init__.py中的sample。

例子:

~$python

Python 3.6.5 (default, Apr 1 2018, 05:46:30) [GCC 7.3.0] on linux Type “help”, “copyright”, “credits” or “license” for more information. >>> import netsnmp >>> with netsnmp.SNMPSession(‘localhost’, ‘public’) as ss:… ss.get([‘.1.3.6.1.2.1.1.1.0’, ‘.1.3.6.1.2.1.1.3.0’]) … [(‘.1.3.6.1.2.1.1.1.0’, ‘STRING’, ‘”Linux laosierLinux 4.15.0-22-generic #24-Ubuntu SMP Wed May 16 12:15:17 UTC 2018 x86_64″‘), (‘.1.3.6.1.2.1.1.3.0’, ‘Timeticks’, ‘0:3:13:31.57’)] >>>

如果上述的信息返回了,哈哈,祝福你成功了。