SNMP陷阱在PHP / Linux中

时间:2016-03-03 09:43:10

标签: php linux snmp net-snmp snmp-trap

有没有人知道如何使用PHP发送SNMP陷阱?或者如何在Linx中发送SNMP陷阱?我使用Net-SNMP从终端发送陷阱。但它并没有告诉MIB需要放在哪里,我无法使用' snmptrap'命令。我需要在RedHat Linux服务器中使用它。

  

MIB搜索路径:/home/user/.snmp/mibs:/usr/local/share/snmp/mibs   找不到模块(MY-MIB):在第1行(无)   MY-MIB :: clientrap:未知对象标识符

这是我得到的错误。我确信我将MIB文件放在 /home/user/.snmp/mibs / usr / local / share / snmp / mibs 中,因为NET-SNMP建议。然后我不知道错误是怎么来的。还有其他MIB搜索路径吗?我不知道。

1 个答案:

答案 0 :(得分:0)

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

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

    1)通过http://www.net-snmp.org/wiki/index.php/Net-Snmp_on_Ubuntu中提到的从sourceforge.net下载Net-Snmp软件包。

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

    • 通过手动下载库并通过运行python脚本进行提取安装
    • 只需使用命令 sudo pip install pysnmp ,假设您已安装了点子。

    这两种方法都在这里描述 - https://pynet.twb-tech.com/blog/snmp/python-snmp-intro.html

    我们安装pysnmp的原因是pysnmp软件包会自动安装NET-SNMP的基本库,即使它是为python程序生成的。

  2. 通过输入命令 snmpd --version snmpget snmptrap 等来确认安装NET-SNMP。< / p>

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

      

    parse-mibs:扫描目录/var/www/html/User/.snmp/mibs   parse-mibs:无法打开MIB目录/var/www/html/User/.snmp/mibs   parse-mibs:扫描目录/ usr / local / share / snmp / mibs

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

      

    的/ usr /本地/共享/ SNMP / MIB的

  5. 使用命令

    发送陷阱
      

    snmptrap -v 2c -c public 192.168.1.1:162 &#34;&#34; MIBNAME-MIB :: trapname MIBNAME-MIB :: message1 s&#34;嗨&#34; MIBNAME-MIB :: message2 s&#34;它有效&#34;

    所以我们现在有了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);   
    
  6. 请注意&#39; 192.168.1.1:162&#39;是经理IP以及端口号。 MIBNAME是MIB文件中给出的MIB模块名称,trapname是MIB文件中的trapname。

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