net-snmp启用python模块(python-netsnmp安装)

转自:http://blog.chinaunix.net/uid-26978448-id-3381386.html

装了N个版本,终于装好了,实在是不容易。

由于需要练手,准备将nagios的bash shell/perl监控脚本改用python写,而监控机上yum安装的net-snmp默认没有启用python模块,这里重新编译安装一个。


    需要准备的安装包包括:
    setuptools-0.6c11-py2.4.egg    //提供easy_install指令用来直接在线安装python模块,类似于perl的 cpan install;
    net-snmp-5.7.2.tar.gz             //net-snmp的源码包。

    先安装setuptools-0.6c11-py2.4.egg,否则net-snmp编译安装无法通过。

    #chmod 755 setuptools-0.6c11-py2.4.egg
    #./setuptools-0.6c11-py2.4.egg

    接着,安装net-snmp

    #tar -zxvf net-snmp-5.7.2.tar.gz
    #cd net-snmp-5.7.2
    #./configure --prefix=/usr/local/netsnmp --with-python-modules
    #make
    #make install

    #cd python
    #python setup.py build
    #python setup.py test    

    出现以下错误:
    ImportError: libnetsnmp.so.30: cannot open shared object file: No such file or directory

    由于net-snmp是编译安装,且安装路径为/usr/local/netsnmp,以至于找不到相应模块,解决方法:

    #echo "/usr/local/netsnmp/lib" >> /etc/ld.so.conf
    #ldconfig
    #python setup.py test//出现类似下图内容即正常:
     net-snmp启用python模块(python-netsnmp安装)_第1张图片


    #python setup.py install
  
    测试net-snmp的python模块的导入:
   #python
   >>>import netsnmp //如果没有报错的话,则net-snmp的python模块启用成功。
 
 
 
 
 
下面是引用的另外一篇文章,也比较经典,但我按照上面的操作并没有成功。
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。 http://thgenius.blog.51cto.com/1042803/917086

因项目中要用到snmp来取数,所以需要弄个snmp服务端,选来选去还是选了netsnmp。首先:

1、解压源码包:
tar –zxvf net-snmp-5.7.1。tar.gz
2、进入解压后的文件目录:
cd net-snmp-5.7.1
3、 执行文件目录下的configure可执行文件,如果想指定程序包的安装路径,那么您首先建立相应的文件夹来存放安装信息,您可以写 成./configure –prefix=/您指定的路径名。参数—prefix用来告诉系统安装信息存放的路径,如果您没有指定路径,直接执行./configure,那么程序 包都会安装在系统默认的目录下,通常为:/usr/local下(网上说默认会到这个目录下,而我安装了二次在这目录下都没有看到文件,只有指定prefix文件才能看到。)。例如:
./configure --prefix=/usr/local/netsnmp //配置 指定安装目录,安装过程会询问您以下的信息:
注意:以下问题似乎不怎么重要,那好像仅仅是官方想了解使用本软件方的信息,可以直接回车而不用回答,系统会采用默认信息,其中日志文件默认安装在/var/log/snmpd.log.数据存贮目录默认存放在/var/net-snmp下。
default version of-snmp-version(3): 3(在这里版本通常有三种形式:1,2c,3)
Systemcontact information(配置该设备的联系信息): heaven(也可以是邮箱地址)
System location (该系统设备的地理位置):BEIJING P.R China
Location to write logfile (日志文件位置): /var/log/snmpd.log
Location to Write persistent(数据存储目录): /var/net-snmp

一般编译源码包不会出现什么错误,而当make的时候centos就报错了。
Can't locate ExtUtils/MakeMaker.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at Makefile.PL line 1.
BEGIN failed--compilation aborted at Makefile.PL line 1.
make: *** [perlmakefiles] 错误 2

网上说是少ExtUtils/MakeMaker.pm 这个模块。然后找了下,51cto上用这个解决:yum -y install perl-devel-5.8.8-32.fc8
而我自己是用的:yum -y install perl-devel-5.8.8-32.fc8

这样过后可正常安装而不报错了。在5.7的版本下snmpd.conf文件是自己已经写好了,不需要在像网上那样把example.conf文件复制过来了,然后自己修改下代理即可。

安装完后就已经启动了。直接用snmp -V就可以得到版本号了,一般来说不会出什么问题。

然后进入net-snmp/python文件夹 python setup.py install 这时没有错误。

但import 时又出错了:
>>> import netsnmp
Traceback (most recent call last):
  File "", line 1, in
  File "netsnmp/__init__.py", line 1, in
    from client import *
  File "netsnmp/client.py", line 1, in
    import client_intf
ImportError: No module named client_intf

不知道是不是在编译的时候没有加个python 模块,然后就直接 yum install net-snmp-python,安装完成后也没有报错,

然后import 时又出错:我勒个去,- -!
>>> import netsnmp
Traceback (most recent call last):
  File "", line 1, in
  File "/usr/lib64/python2.6/site-packages/netsnmp_python-1.0a1-py2.6-linux-x86_64.egg/netsnmp/__init__.py", line 1, in
    from client import *
  File "/usr/lib64/python2.6/site-packages/netsnmp_python-1.0a1-py2.6-linux-x86_64.egg/netsnmp/client.py", line 1, in
    import client_intf
ImportError: libnetsnmp.so.30: cannot open shared object file: No such file or directory

感觉是没这个文件,网上看了下,solution:
ln -s /usr/local/lib/libnetsnmp.so.30 /usr/lib/

终于可以import了,我。。。。。。

mark,mark,呵呵

等脚本写完后会发布,有兴趣的可以大家一起交流交流。。。HOHO。。

 

本文出自 “西边太阳” 博客,请务必保留此出处http://thgenius.blog.51cto.com/1042803/917086

 

验证安装是否成功,如下所示:
>> snmpget --version
如果成功,则显示当前的安装版本号,NET-SNMP version: 5.7.1
如果提示如下错误:
snmpget: error while loading shared libraries: libnetsnmp.so.30: cannot open shared object file: No such file or directory
则解决方案如下: cp /usr/local/lib/libnetsnmp.so.30 /usr/lib
或者将/usr/local/lib下所有的包都copy到/usr/lib下即可,再次运行以上获取版本的命令,即可正确输出版本号,表示Ubuntu下安装net-snmp成功!

 

 相关链接:(python snmp 自动化测试)

http://blog.chinaunix.net/uid-20393955-id-3080624.html

http://blog.chinaunix.net/uid-20393955-id-3085550.html

http://blog.sina.com.cn/s/blog_6f48f2070100pt0c.html

 http://hi.baidu.com/new/h0yg7l1hup

 

你可能感兴趣的:(Python)