编译安装net-snmp 5.4.4

一、安装环境

  本例安装环境为 SUSE Linux Enterprise Server 11 SP3 (x86_64),内核版本3.0.101-0.47.99-default。

# 系统发行版本
# cat /etc/issue

Welcome to SUSE Linux Enterprise Server 11 SP3  (x86_64) - Kernel \r (\l).

#系统内核版本
# uname -r
3.0.101-0.47.99-default

二、下载安装包及编译安装及配置snmp

2.1、下载安装

  本例安装版本为net-snmp-5.4.4。

  下载地址:https://sourceforge.net/projects/net-snmp/files/net-snmp/5.4.4/net-snmp-5.4.4.tar.gz

  将下载的tar包上传到服务,进入上传的文件夹,本例为/opt/snmpsetup目录。执行下面的命令安装:

 # cd /opt/snmpsetup/							--进入文件安装包所在目录;
 # tar zvxf net-snmp-5.4.4.tar.gz				--解压安装包;
 # cd net-snmp-5.4.4/							--进入解压得到的安装包;
 # ./configure --prefix=/usr/local/net-snmp		--执行编译配置;

 # 编译配置配置过程中会有如下提示配置相关参数,有如下几项,直接在提示下回车即可:
Default version of SNMP to use (3): 
System Contact Information (root@):
System Location (Unknown): 
Location to write persistent information (/var/net-snmp):

 # make && make install							--编译源文件及安装;
 
# 编译及安装完成后检查安装的版本是否正确,如NET-SNMP version为5.4.4版本则为安装版本:
# /usr/local/net-snmp/sbin/snmpd -v

NET-SNMP version:  5.4.4
Web:               http://www.net-snmp.org/
Email:             net-snmp-coders@lists.sourceforge.net

2.2、配置snmp服务配置文件

在上述/opt/snmpsetup/net-snmp-5.4.4解压的编译目录中python/netsnmp/tests下有给出的snmpd.conf配置文件,在系统的/etc目录下新建snmp目录,并将python/netsnmp/tests目录下的snmpd.conf拷贝到/etc/snmp目录下,操作如下:

# cd python/netsnmp/tests						--进入配置文件源文件目录
# ll												--查看文件是否存在如下snmpd.conf即是
total 28
-rw------- 1 1232 123     0 Sep 22  2006 __init__.py
-rw------- 1 1232 123 16100 Sep 22  2006 snmpd.conf
-rw------- 1 1232 123 11905 Oct 17  2006 test.py
# cp snmpd.conf /etc/snmp						--将配置文件拷贝到/etc/snmp目录
# ls /etc/snmp/									--查看拷贝的文件已存在
snmpd.conf

# vim /etc/snmp/snmpd.conf						--打开配置文件修改
  在打开的配置文件中找到这如下段落,约61行处,sec.name列为snmp共同体访问的用户名配置;source列为允许访问的ip
或地址段如配置为地址段则地址段后跟子网掩码,如x一行如只允许一个ip访问则填写IP即可;community列则为共同体名称被调
用使用可以自定义,本例默认public。
#       sec.name  source          community
com2sec local     localhost       public
com2sec mynetwork x.x.x.x/8      public

  完成如上修改后,保存文件退出。

三、启动snmp及启动基本配置

  在完成snmp的配置文件修改后就可以临时启动snmpd服务测试是否可用了,由于为编译安装,启动snmpd需要在安装的目录中找到命令启动,在编译时本例指定的安装目录为/usr/local/net-snmp,所以使用/usr/local/net-snmp目录下sbin/目录中snmpd命令指定配置文件启动即可。

3.1、启动snmpd服务

  启动snmpd服务需要用snmpd命令并指定配置文件启动,本例相关命令和配置文件为: 启动命令:/usr/local/net-snmp/sbin/snmpd 配置文件:/etc/snmp/snmpd.conf 

# /usr/local/net-snmp/sbin/snmpd -c /etc/snmp/snmpd.conf		--启动snmpd

# netstat -an | grep 161		--snmpd端口为udp的161启动后检查端口是否存在
udp        0      0 0.0.0.0:161             0.0.0.0:* 	

# snmpwalk -v 1 localhost -c public sysName		--测试获取主机名称正常则返回STRING后面的名称
SNMPv2-MIB::sysName.0 = STRING: RongshuServer

  至此snmpd的编译、配置、启动已经完成,即已为可用状态。

3.2、配置snmpd服务启动脚本

  由于编译安装并不是其他运维人员在不熟悉的情况下找不到启动路径,所以编写snmpd启动脚本,方便以后维护使用,操作如下:

1、在/etc/init.d/目录下创建snmpd文件:
# vim /etc/init.d/snmpd

2、将如下代码复制到文件中:
#!/bin/bash
#description:snmpd
#This scripts is to Manager snmpd service.
#by authors xxxx
#Time:2020-12-2
#chkconfig: 2345 80 90

proc_count=`ps -ef | grep net-snmp | grep -v grep | wc -l`
snmp_pid=`ps -ef | grep net-snmp|grep -v grep | awk '{print $2}'`

#echo $proc_count
#echo $snmp_pid

case $1 in

        start )
        if [[ $proc_count == 1 ]];
        then
        echo "Snmpd service is runing......"
        elif [[ $proc_count == 0 ]];
        then
        /usr/local/net-snmp/sbin/snmpd -c /etc/snmp/snmpd.conf
        fi
        exit
        ;;

        stop )
        kill -9 $snmp_pid
        ;;

        status )
        if [[ $proc_count == 1 ]];
        then
        echo "Snmpd service is runing......"
        elif [[ $proc_count == 0 ]];
        then
        echo "Snmpd service is not runing......"
        fi
        ;;

        * )
        echo "Usage:{$1 start|stop|status}"
        ;;
esac

3、在vim命令模式,:wq! 保存文件退出!

4、赋予文件执行权限:
chmod +x  /etc/init.d/snmpd

5、snmpd启动管理
# service snmpd stop
# service snmpd start
# service snmpd status

6、加入开机启动
# chkconfig --add snmpd
# chkconfig snmpd on