SNMP 陷阱 PHP/Linux

SNMP Trap In PHP/Linux

有谁知道如何使用 php 发送 SNMP 陷阱?或者如何在 Linx 中发送 SNMP 陷阱?我使用 Net-SNMP 从终端发送陷阱。但它并没有说明 MIB 需要放置的确切位置,而且我无法使用 'snmptrap' 命令发送陷阱。我需要在 RedHat Linux 服务器中使用它。

MIB search path: /home/user/.snmp/mibs:/usr/local/share/snmp/mibs Cannot find module (MY-MIB): At line 1 in (none) MY-MIB::clientrap: Unknown Object Identifier

这是我遇到的错误。我确定我将 MIB 文件放在 /home/user/.snmp/mibs/usr/local/share/snmp/mibs 正如 NET-SNMP 所建议的那样。然后不知道错误是怎么来的。还有其他的MIB搜索路径吗?我不知道。

PHP 中似乎没有发送 SNMP 陷阱的直接方法,答案也是如此。所以最后我想出了自己的办法,依靠Net-Snmp本身。我真正想要的是从 php 程序发送 Snmp 陷阱。我终于能够通过 Linux 终端在 Net-Snmp 库的帮助下完成它。以下是步骤。

  1. 安装 Net-Snmp:有两种方法可以在您的 linux 机器上安装 net-Snmp 包

    1) 通过从 sourceforge.net 下载 Net-Snmp 包,如 http://www.net-snmp.org/wiki/index.php/Net-Snmp_on_Ubuntu.

    中所述

    2) 通过安装 pysnmp 模块 - 这种方法看起来更简单。你也可以用两种不同的方式来做。

    • 通过手动下载库并通过 运行ning python 脚本安装成功解压
    • 只需使用命令 sudo pip install pysnmp ,假设您已经安装了 pip。

    此处描述了两种方法 - https://pynet.twb-tech.com/blog/snmp/python-snmp-intro.html

    我们安装 pysnmp 的原因是 pysnmp 包自动安装 NET-SNMP 的基本库,即使它是为 python 程序制作的。

  2. 通过键入命令 snmpd --versionsnmpgetsnmptrap

  3. 使用命令snmpget -Dparse-mibs 2>&1 | grep directory查找MIB搜索路径。它将显示 Net-Snmp 查找 MIB 文件的路径。通常结果是:

    parse-mibs: Scanning directory /var/www/html/User/.snmp/mibs parse-mibs: cannot open MIB directory /var/www/html/User/.snmp/mibs parse-mibs: Scanning directory /usr/local/share/snmp/mibs

  4. '.txt' 格式的 MIB 文件复制(上传)到可用的 MIB 搜索路径之一。通常是

    /usr/local/share/snmp/mibs

  5. 使用命令

    发送陷阱

    snmptrap -v 2c -c public 192.168.1.1:162 "" MIBNAME-MIB::trapname MIBNAME-MIB::message1 s "Hi" MIBNAME-MIB::message2 s "It works"

    所以我们现在有了 shell 命令。我们可以使用 exec() 函数在 php 中 运行 它。 `

       exec("snmptrap -v 2c -c public *192.168.1.1:162* '' MIBNAME-MIB::trapname MIBNAME-MIB::message1 s 'Hi' MIBNAME-MIB::message2 s 'It works'", $output, $result);   
    

请注意,“192.168.1.1:162”是管理器 IP 以及端口号。 MIBNAME 是 MIB 文件中给出的 MIB 模块名称,trapname 是 MIB 文件中的陷阱名称。

假设您在给定的 IP 中有一台正常工作的 SNMP 管理器机器,以接收 SNMP 管理器中 MIB 文件中给定格式的 Snmp 陷阱。