转自:http://blog.chinaunix.net/uid-26978448-id-3381386.html
装了N个版本,终于装好了,实在是不容易。
由于需要练手,准备将nagios的bash shell/perl监控脚本改用python写,而监控机上yum安装的net-snmp默认没有启用python模块,这里重新编译安装一个。
因项目中要用到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。。
本文出自 “西边太阳” 博客,请务必保留此出处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