zoukankan      html  css  js  c++  java
  • netsnmp5.9.1编译安装

    SNMP简介

    简单网络管理协议(SNMP,Simple Network Management Protocol)构成了互联网工程工作小组(IETF,Internet Engineering Task Force)定义的Internet协议族的一部分。该协议能够支持网上管理系统,用以监测连接到网络上的设备是否有任何引起管理上关注的情况。

    目前网络上的大部分snmp配置教程都是通过yum工具在线安装的,因为版本的变迁,通过在线方式安装的snmp版本安装后无法解析中文消息,使用起来不太方便。

    本教程是通过手动编译安装net-snmp-5.9.1版本和snmptt_1.4 beta2版本,再配合conv_snmptrap_mb脚本,可以将中文消息解析出来。

    在centos上手动编译安装和卸载net-snmp-5.9.1

    首先下载net-snmp-5.9.1.tar.gz压缩包,官网地址:http://www.net-snmp.org/download.html
    
    安装步骤:
    tar zxvf net-snmp-5.9.1.tar.gz
    cd /root/net-snmp-5.9.1
    ./configure --prefix=/usr/bin/snmp --enable-embedded-perl --enable-shared --with-perl-modules
    make &>LOG_make
    tailf LOG_make   ##开一个新终端窗口查看
    make install &>LOG_install
    tailf LOG_install   ##开一个新终端窗口查看
    ln -s /usr/bin/snmp/sbin/snmpd /usr/local/sbin/snmpd
    ln -s /usr/bin/snmp/sbin/snmptrapd /usr/local/sbin/snmptrapd
    mkdir -p /usr/bin/snmp/etc/snmp
    cd /root/net-snmp-5.9.1
    cp EXAMPLE.conf /usr/bin/snmp/etc/snmp/snmpd.conf
    
    卸载步骤:
    cd /root/net-snmp-5.9.1
    make uninstall
    make distclean
    rm -f /usr/local/sbin/snmptrapd
    rm -f /usr/local/sbin/snmpd
    
    如果编译过程中出现类似以下的报错:
    
    Can't locate ExtUtils/Embed.pm in @INC 
    
    安装perl-ExtUtils-Embed包即可:
    
    yum list | grep ExtUtils-Embed
    
    yum install perl-ExtUtils-Embed.noarch -y
    

    开启snmpd和snmptrapd进行调试

    snmpd -LS0-6d -f
    -f是前台启动
    -L是选择日志输出方式,0-6d
    日志等级:
    0 or ! for LOG_EMERG,
    1 or a for LOG_ALERT,
    2 or c for LOG_CRIT,
    3 or e for LOG_ERR,
    4 or w for LOG_WARNING,
    5 or n for LOG_NOTICE,
    6 or i for LOG_INFO, and
    7 or d for LOG_DEBUG.
    
    snmptrapd  -On -d -f -Lo -c /etc/snmp/snmptrapd.conf
    
     上面命令中的选项表示:
    
     -On: 使snmptrapd以数字形式传递oid,并防止SNMPTT将符号名转换为数字形式
    
     -C : 表示不使用net-snmp默认路径下的配置文件snmptrapd.conf;
    
     -c : 指定snmptrapd.conf文件;
    
     -d : 显示收到和发送的数据报,通过这个选项可以看到数据报文;
    
     -f : 默认情况下,snmptrapd是在后台中运行的,加上这个选项,表示在前台运行;
    
     -L : 指定日志记录在哪里,后面的o表示直接输出到屏幕上,如果是跟着f表示日志记录到指定的文件中;
    
     可通过snmptrapd -h查看命令帮助了解该命令的使用。
     
     客户端发送测试命令:
     snmptrap -v 2c -c public 192.168.8.254:162 "" .1.3.6.1.4.1.2021.251.1  sysLocation.0 s "test"
     
     在服务端的snmptrapd窗口能接收到命令就表示服务运行正常。
    

    添加snmpd和snmptrapd为systemctl服务

    1、分别创建snmpd.service和snmptrapd.service文件,内容如下;

    cat /usr/lib/systemd/system/snmpd.service

    [Unit]
    Description=Simple Network Management Protocol (SNMP) Daemon.
    After=network.target
    
    [Service]
    Type=simple
    PIDFile=/var/run/snmpd.pid
    ExecStart=/usr/bin/snmp/sbin/snmpd.sh
    Restart=always
    ExecReload=
    PrivateTmp=True
    
    [Install]
    WantedBy=multi-user.target
    

    cat /usr/lib/systemd/system/snmptrapd.service

    [Unit]
    Description=Simple Network Management Protocol (SNMP) Trap Daemon.
    After=network.target
    
    [Service]
    Type=simple
    PIDFile=/var/run/snmptrapd.pid
    ExecStart=/usr/bin/snmp/sbin/snmptrapd.sh
    Restart=always
    ExecReload=
    PrivateTmp=True
    
    [Install]
    WantedBy=multi-user.target
    

    2、将文件复制到/usr/lib/systemd/system/目录中

    cp snmpd.service /usr/lib/systemd/system/
    cp snmptrapd.service /usr/lib/systemd/system/
    

    3、创建snmpd和snmptrapd脚本文件,这俩个是服务启动文件

    cat snmpd.sh

    #! /bin/sh
    /usr/local/sbin/snmpd -LS0-6d -f
    

    cat snmptrapd.sh

    #! /bin/sh
    /usr/local/sbin/snmptrapd -On -Lsd -f -c /etc/snmp/snmptrapd.conf
    

    4、将snmpd.sh和snmptrapd.sh文件放到snmp安装目录中

    cp snmpd /usr/bin/snmp/sbin/
    cp snmptrapd /usr/bin/snmp/sbin/
    

    5、为服务执行文件添加可执行权限

    chmod +x /usr/lib/systemd/system/snmpd.service
    
    chmod +x /usr/lib/systemd/system/snmptrapd.service
    

    6、设置为开机启动

    systemctl enable snmpd.service
    
    systemctl enable snmptrapd.service
    

    手动编译安装和卸载snmptt_1.4beta2

    (这个版本其实是可以直接通过yum在线安装的方式安装,但在线安装的时候会把原来安装的net-snmp给覆盖掉,所以这里也采用手动编译的方式进行安装):

    tar zxvf snmptt_1.4beta2.tgz
    cd /root/snmptt_1.4beta2
    cp snmptt /usr/sbin/
    chmod +x /usr/sbin/snmptt
    cp snmptthandler /usr/sbin/snmptthandler
    chmod +x /usr/sbin/snmptthandler
    cp snmptthandler-embedded /usr/sbin/snmptthandler-embedded   ##只有嵌入模式可用,且须支持“perl   PERLCODE”,执行“snmptrapd -H 2>&1 | grep perl.”命令后,有输出就表示支持
    chmod +x /usr/sbin/snmptthandler-embedded
    cp snmptt.ini /etc/snmp/
    cp examples/snmptt.conf.generic /etc/snmp/snmptt.conf
    mkdir /var/log/snmptt/
    修改以下行,standalone表示每次修改snmptt.ini配置后无需重启snmptt服务,daemon模式每次修改配置后要重启snmptt服务:
    vi /etc/snmp/snmptt.ini
    mode = standalone
    如果snmptt配置为standalone模式,修改snmptrapd.conf如下:
    vi /etc/snmp/snmptrapd.conf
    修改以下行:
    traphandle default /usr/sbin/snmptt
    如果snmptt配置为daemon模式,修改snmptrapd.conf如下:
    mode = daemon
    vi /etc/snmp/snmptrapd.conf
    traphandle default /usr/sbin/snmptthandler
    
    mkdir /var/spool/snmptt/
    chown -R snmptt:snmptt /var/spool/snmptt/
    cp snmptt-init.d /etc/rc.d/init.d/snmptt
    chkconfig --add snmptt
    开启服务自启:
    chkconfig --level 2345 snmptt on
    手动开启服务
    service snmptt start或/etc/rc.d/init.d/snmptt start
    snmptt --daemon
    cp snmptt.logrotate /etc/logrotate.d/snmptt
    如果服务启动失败,删除以下文件后再试试:
    rm -f /var/run/snmptt.pid
    
    查看告警日志:
    tailf /var/log/snmptt/snmptt.log
    tailf /var/log/snmptt/snmpttunknown.log
    

    其他:

    snmptrapd服务配置说明:

    cat /etc/snmp/snmptrapd.conf

    # Example configuration file for snmptrapd
    #
    # No traps are handled by default, you must edit this file!
    #
    # authCommunity   log,execute,net public
    # traphandle SNMPv2-MIB::coldStart    /usr/bin/bin/my_great_script cold
    authCommunity   log,execute,net public
    #traphandle default /usr/local/bin/conv_snmptrap_mb | /usr/sbin/snmptthandler  ##daemon模式下使用
    #traphandle default  /usr/sbin/snmptthandler           ##daemon模式下使用
    #traphandle default /usr/sbin/snmptt --ini=/etc/snmp/snmptt.ini  ##standalone模式下使用
    perl do "/usr/sbin/snmptthandler-embedded";               ##daemon模式下使用,注意这一行后面有个分号
    disableAuthorization yes
    

    官方conv_snmptrap_mb文件使用方法说明:

    # cp -p conv_snmptrap_mb /usr/local/bin/.
    # chmod a+x /usr/local/bin/conv_snmptrap_mb
    
    编辑/etc/snmp/snmptrapd.conf
    disableAuthorization yes
    traphandle 1.3.6.1.4.1.311.* /usr/local/bin/conv_snmptrap_mb | iconv -f cp932 | /usr/sbin/snmptthandler
    traphandle 1.3.6.1.4.1.6876.* /usr/local/bin/conv_snmptrap_mb | /usr/sbin/snmptthandler
    traphandle default /usr/sbin/snmptthandler
    

    conv_snmptrap_mb文件下载地址:点击下载

  • 相关阅读:
    檢查 cpu 的全部 gpio 狀態及設定
    device tree 負值 property 寫法
    shell script timer and 無限迴圈
    vim 搜尋取代功能
    英国人是这样“造”单词的
    计划时间程序
    程序猿的崛起,一篇文章看懂编程语言
    如何读懂计算机(二进制)
    为什么计算机上能看到动人的图片,精彩的视频和悦耳的音乐?(二进制)
    格式化时间用了YYYY-MM-dd,元旦当天老板喊我回去改Bug!(转载)
  • 原文地址:https://www.cnblogs.com/xzy186/p/15673113.html
Copyright © 2011-2022 走看看