使用的系统为ubuntu16.4的64位系统安装在VMware 12.5.7上
Net-SNMP使用5.7.3版本
Net-SNMP的源码sourceforge下载地址 ,也可以在官网下载。我下载的是net-snmp-5.7.3.tar.gz。
为了避免安装时出现竞争,需要运行如下命令卸载可能安装的软件
sudo apt-get remove snmp
sudo apt-get remove snmpd
sudo apt-get remove libsnmp15
sudo apt-get remove libsnmp-base
如果你也是安装在ubuntu桌面版本的话,需要安装依赖包。命令如下:
sudo apt-get install libperl-dev
sudo apt-get install libsensors4-dev //不是必须的,如果你要使用lm-sensors模块则需安装
将下载的源码放在你的工作目录下,运行解压命令:
tar xvf net-snmp-5.7.3.tar.gz
cd net-snmp-5.7.3
cd net-snmp-5.7.3
./configure --with-mib-modules="ucd-snmp/lmsensorsMib" --with-ldflags="-lsensors"
运行之后会问你一些问题如邮箱、位置、日志等,可以直接按回车选择默认即可,你也可以在配置时指定这些使用下面的命令:
./configure --with-default-snmp-version="3"
--with-sys-contact="@@no.where" --with-sys-location="Unknown"
--with-logfile="/var/log/snmpd.log" --with-persistent-directory="/var/net-snmp"
--with-mib-modules="ucd-snmp/lmsensorsMib" --with-ldflags="-lsensors"
你也可以添加
--prefix=/usr/local/net-snmp
来指定Net-SNMP安装到/usr/local/net-snmp
目录下,Net-SNMP默认是安装到/usr/local
目录下的。
注意:上面使用的--with-mib-modules="ucd-snmp/lmsensorsMib" --with-ldflags="-lsensors"不是必须的,我在这里添加这个配置项是为了后面使用lm-sensors模块,如果你不需要可不添加。
执行make命令进行编译
make
执行sudo make install 命令进行安装,安装时需要使用管理员权限
sudo make install
安装成功后如下图所示:
可以使用下面的命令去验证你是否成功安装了Net-SNMP,如果你可以获取到正确的版本号,说明你已经成功安装了Net-SNMP
$snmpget --version
NET-SNMP version: 5.7.3
EXAMPLE.conf
修改为snmpd.conf
对其进行一定的修改,然后将其放在安装目录下/usr/local/share/snmp
,也可放在自定义的目录下(在自定义目录下运行snmpd
时需要使用-c
选项指定snmpd.conf
的具体位置)。sudo snmpconf -i -g basic_setup
命令来配置产生一个snmpd.conf
文件,其中-i
选项使产生的文件存放在snmp的安装目录下,否则在当前目录下产生。snmpd.conf
文档,在文档中加入如下配置,以获得一个最简单的配置文件。然后将文件拷贝到snmp的安装目录下。rocommunity public
rwcommunity private
trapcommunity public
如果你的snmpd.conf
文件是放在Net-SNMP
的安装目录下(/usr/local/share/snmp
)则直接运行snmpd
即可
sudo snmpd
如果是放在其它目录下则需指定配置文件的位置
sudo snmpd -c $PATH/snmpd.conf
可通过如下命令检查snmpd是否启动
in@v-m:~/learn$ netstat -na | grep 161
udp 0 0 0.0.0.0:161 0.0.0.0:*
unix 3 [ ] 流 已连接 16156
unix 3 [ ] 流 已连接 40161 /var/run/dbus/system_bus_socket
unix 3 [ ] 流 已连接 16115 /var/run/dbus/system_bus_socket
unix 2 [ ] 流 已连接 16107
unix 3 [ ] 流 已连接 16106
或
in@v-m:~/learn$ ps aux | grep snmp
root 75868 0.0 0.1 40580 5280 ? S 23:02 0:00 snmpd
可以用如下的几个命令获取系统开机时间,如果有正确的返回则说明snmp运行正常
in@v-m:~$ snmpget -v 2c -c public localhost sysUpTime.0
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (60970) 0:10:09.70
in@v-m:~$ snmpget -v 2c -c public localhost 1.3.6.1.2.1.1.3.0
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (74822) 0:12:28.22
参考: