在Win7_CentOS虚拟机上实现python-netsnmp扩展
大二菜鸟暑期实习,要实现对某设备的监控,需要用到snmp,此前对python、snmp甚至linux一窍不通,通过近两周的学习差不多入门,在此做下笔记,供以后参考,也希望能得到指正。
公司的这台电脑连不了外网,前期需要的所有东西除了共享全部靠U盘搬运。后面在CentOS上搭建环境时遇到缺少各种东西问题也无法通过yum等命令解决,所有的安装都是源码编译安装,所以非常但藤。
首先是虚拟机,使用的是比较流行的VMware,镜像文件CentOS-7-x86_64-DVD-1511.iso,过程就不赘述了。前后装了四次虚拟机,最后选择的基本环境是工作站那个,因为其他的貌似都没有默认安装tcl/tk模块,我在源码安装tk的时候又遇到缺少X11/Xlib.h 的问题,连不上外网包的资源也找不到,难以解决,而我又想用到tkinter,只有这个基本环境才行得通。这里需要提醒的是在搭建环境的过程中尽量记得保存快照....
重头戏来了。环境搭建:
一、安装python2.7
centos默认的是2.7.5版本的python,这里我需要用到更低的版本python2.7,原因很复杂就不赘述了..
cd 到目录下
解压 tar -zxvf python-2.7.tar.gz
./configure
make
make install (install等操作的时候记得sudo...)
每次都python2.7很麻烦而且会出错,所以需要更改一下默认的python版本
rm /usr/bin/python (个人感觉将其改名而不是删除比较好,不过已经删了就懒得管了)
ln -s /usr/local/bin/python2.7 /usr/bin/python(替代原来的python)
terminal python 确认一下版本是不是变成了自己需要的
二、安装setuptools
没有这个东西netsnmp的安装会报错
还是先解压.tar.gz文件
python setup.py build
python setup.py install
三、安装net-snmp
解压,我用的5.7.3版本
./configure 这里记得要 --with-python-modules,其他的东西可以--help自己查看一下
make&&make install
snmpd -version查看信息确认安装成功
snmpget(或者snmpwalk) -v2c -c public(没配置community默认是public) 10.1..... (IP address) .1.3.6.1.4.1.......(oid,snmpwalk的话不用精确到最后或者根本不用)
能获取到消息说明可以正常工作啦
然后cd 到 netsnmp/python文件夹中把setup.py install以支持python
至此基本安装完成
四、配置snmpd.conf snmp.conf,以及导入mibs
如果没有默认生成这两个文件则需要自己去创建
touch snmp.conf
chmod 777 snmp.conf
照着example写两句就可以了,用默认的也可以
记住community,后面会用到
获取到自己需要的mib文件,设备的厂家会有自己的mib文件,将其拷贝到默认的mibs路径
snmp.conf中记得写入mibs+XXX-MIB 来加载你需要用到的MIB,关于MIB不在这里赘述。
至此完成环境搭建
python
〉〉〉import netsnmp
〉〉〉import Tkinter
没有报错
五、中途遇到的一些错误及解决
遇到太多问题都记不太清了....大多数情况百度到的解决办法都是 yun ......install,让我这个没网的怎么办....
1、install netsnmp的时候报错没有Makemaker或者 找不到perl5什么什么的,那么确认你安装了perl以及其路径
2、libnetsnmp.so.30找不到,ln -s /usr/local/lib/libnetsnmp.so.30 /usr/lib创建一个连接一般可以解决,
但我并不能于是export LD_LIBRARY_PATH=/usr/local/lib每次terminal都要输入一次但确实可行,更好的办法正在寻找中。。
3、MIB文件复制到mibs默认读取路径,snmp.conf也改了但始终无法正常获取,尝试export MIBS+=XXX-MIB(unset MIBS可以将其删除)
前面的步骤看起来可以一口气执行下来,然而事实是每一步都可能遇到问题,度娘上的解决办法80%都跟自己的情况多少有些不
符合,15%的看不懂所以很多都要自己花时间摸索。
六、一个很初级的demo
到这里就可以自己写.py来为所欲为了- -
能够手动get到MIB中有的项目了,但是离监控还差得远,下一步要开始研究trap了