在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了

            在Win7_CentOS虚拟机上实现python-netsnmp扩展