linux下net-snmp的源码编译安装与配置


首先下载源码:http://www.net-snmp.org/
解压到自己新建的文件夹里面,进入文件夹:
这里需要注意一下,需要安装Ubuntu下的snmp的依赖包,具体如下:
<span style="font-size:14px;">sudo apt-get install libperl-dev</span>

以上的安装方式是先下载,后自动安装
这个可以提前安装,不然的话后面也会提醒你安装的

1../configure:这可以检查你的系统的相关的一些环境是否符合,并生成源码的Makefile文件
<span style="font-size:14px;">./configure --prefix=/usr/local/net-snmp --enable-mfd-rewrites --with-default-snmp-version="2" --with-sys-contact="raining@126.com" --with-sys-location="China" --with-logfile="/var/log/anmpd.log" --with-persistent-directory="/var/net-snmp"</span>

prefix:net-snmp将要安装的路径
enable-mfd-rewrites:允许用新的MFD重写可用的mid模块
with-default-snmp-version:默认的SNMP版本
with-sys-contact:可以配置该设备的联系人
with-sys-location:该设备的位置
with-logfile:日志文件路径
with-persistent-directory:不变数据存储目录
也可以还有其他的选项,比如:--with-mib-modules=ucd-snmp/diskio选项,可以让服务器支持磁盘I/O监控
然后回车,中间可能会碰到询问System Contact Information ():(配置该设备的联系信息):让你填写的,这个地方直接回车就好

2.编译:
sudo make

一般不会出错

3.安装:
sudo make install 

这个也可以和上面合成一步,
sudo make && make install


如果失败需要卸载的话:
sudo make uninstall

记住需要root权限,不然的话没法删除一些目录

以上几步都不能出错,因为一旦出错,将没法进行下一步了,一般情况也也不会出错
以上就算安装好了,接下来是配置snmpd.conf
进入到解压后的目录,就是当前目录,将当前目录下的EXAMPLE.conf文件复制到/usr/local/net-snmp/share/snmp,并重命名为 snmpd.conf

<span style="font-size:14px;">sudo cp EXAMPLE.conf /usr/local/net-snmp/share/snmp
sudo mv EXAMPLE.conf snmpd.conf
sudo vim snmpd.conf</span>


然后对snmpd.conf进行部分修改:
这里有几个不同版本的snmpd.conf内容,我遇到的是网上出现较少的那个版本的,修改如下:
1.找到agentAddress  udp:127.0.0.1:161
将这一行注释掉:前面添加#
在下一行添加新的配置:agentAddress udp:161
2.选择v2c  snmp的版本:
找到 trapsink   localhost  public 
       tran2sink  localhost  public 
将第一行注释掉,将第二行的注释符号删除
3.设置访问权限:
ACCESS  CONTROL
找到rocommunity public default -v systemonly 
-v systemonly删除,则变成可以能访问全部

这样只是一些简单的配置,如果还需要其他的则自己在进行修改


测试:
在命令行中输入:
snmpd --version

如果出现snmp的版本信息,则表示安装成功

几种启动snmp的方法:
1.
/usr/local/net-snmp/sbin/snmpd -c /usr/local/net-snmp/shaer/snmp/snmpd.conf

注意:net-snmp为你安装的snmp的目录,这是在你安装的目录下进行snmp的启动,你可以设置在任意目录下启动snmp:
echo export LD_LIBRARY_PATH=/usr/local/lib >> .bashrc

即可在任意目录下进行启动:
/usr/local/net-snmp/sbin/snmpd


2.设置系统自启动
cp dist/snmpd-init.d /etc/init.d/snmpd
vi /etc/init.d/snmpd

修改
prog="/usr/local/sbin/snmpd"
prog="/usr/local/net-snmp/sbin/snmpd"
修改
[ -x $prog -a -f /usr/local/share/snmp/snmpd.conf ] || exit 0
[ -x $prog -a -f /usr/local/net-snmp/share/snmp/snmpd.conf ] || exit 0

cp dist/snmpd-init.d /etc/init.d/snmpd
vi /etc/init.d/snmpd


3.  
/etc/init.d/snmpd  start

(当然,重新启动是:restart,停止是stop,查看状态是status)


查看snmpd的进程是否启动
 ps -aux | grep snmpd

执行几条命令来验证snmp服务:
snmpget -v 2c -c public localhost sysName.0

如果有输出信息则表示snmp运行正常,但是有时候会报错说无法识别sysName.0,这是查询主机的名字,一般是能识别的,如果不能识别,就换成:
snmpget -v 2c -c public localhost  .1.3.6.1.2.1.1   

这会返回很多信息,这是你的snmpd.conf允许访问的oid信息,如果需要扩充的话,可以去修改 view systemonly include 后面的信息
上面说到的主机的名字对应的是.1.3.6.1.2.1.1.5.0,如果用这个oid去查询的话就会返回主机的名字了,常用的oid的总结可以参考这里:http://www.cnblogs.com/aspx-net/p/3554044.html
snmpget -v 2c -c public localhost sysName.0 这条命令的第一个snmpget是你选择的命令,还可以是snmpwalk等,-v是选择的版本,-c是密码,localhost是你访问的ip地址,后面是你需要得到的oid的信息。这里还需要注意几个问题就是,可能会有timeout的问题,所以首先你的保证你所访问的ip的设备上开启了snmp的服务,如果你是访问自己的本机出现问题的话,一般localhost是不会出问题的,因为这个地址不经过网卡,但是127.0.0.1的话可能会出问题,就是你的防火墙阻止了161端口的访问,所以这里你需要设置一下你的防火墙,开启udp 161端口的访问权限

首先使用:
sudo iptables -L -n

 查看当前iptables的规则,
然后:
iptables -I INPUT -p udp --dport 161 -j ACCEPT 

添加UDP 161端口到iptables防火墙中,然后执行
iptables save

命令保存防火墙的更改,在执行
sudo iptables -L -n

可以看到防火墙已经对外开放了UDP 161的访问端口



  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值