关于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’)] >>>
如果上述的信息返回了,哈哈,祝福你成功了。