您的位置:首页 > 编程语言 > Python开发

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

2012-11-18 17:58 627 查看
转自: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//出现类似下图内容即正常:




#python setup.py install

测试net-snmp的python模块的导入:
#python
>>>import netsnmp //如果没有报错的话,则net-snmp的python模块启用成功。

下面是引用的另外一篇文章,也比较经典,但我按照上面的操作并没有成功。

原创作品,允许转载,转载时请务必以超链接形式标明文章
原始出处 、作者信息和本声明。否则将追究法律责任。/article/7310280.html

因项目中要用到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 "<stdin>", line 1, in <module>

File "netsnmp/__init__.py", line 1, in <module>

from client import *

File "netsnmp/client.py", line 1, in <module>

import client_intf

ImportError: No module named client_intf

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

然后import 时又出错:我勒个去,- -!

>>> import netsnmp

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

File "/usr/lib64/python2.6/site-packages/netsnmp_python-1.0a1-py2.6-linux-x86_64.egg/netsnmp/__init__.py", line 1, in <module>

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 <module>

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。。

本文出自 “西边太阳” 博客,请务必保留此出处/article/7310280.html

验证安装是否成功,如下所示:

>> 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: