SNMP Traphandle无法正常工作

时间:2017-08-08 16:00:03

标签: linux snmp snmp-trap

这是我第一次使用SNMP,但在阅读SNMP pages后,我仍然无法在接收陷阱时运行简单的shell脚本。

我的/etc/snmp/snmptrapd.conf文件如下所示:

# Example configuration file for snmptrapd
#
# No traps are handled by default, you must edit this file!
#
disableAuthorization yes
authCommunity log,execute,net public
# the generic traps
traphandle default /usr/local/bin/snmptrapd.sh

snmptrapd.sh脚本只是说“你好”。

#!/bin/sh

echo "hello"

该脚本是可执行的,并在独立执行时运行:

> /usr/local/bin/snmptrapd.sh
hello

snmptrapd作为后台进程运行:

> ps -ef | grep snmp
root     29477     1  0 14:49 ?        00:00:00 /usr/sbin/snmptrapd -Lsd -p /var/run/snmptrapd.pid -Cc /etc/snmp/snmptrapd.conf

然而,当我使用snmptrap在本地发送陷阱时,没有任何反应:

> snmptrap -v 2c -c public localhost "" NET-SNMP-EXAMPLES-MIB::netSnmpExampleHeartbeatNotification netSnmpExampleHeartbeatRate i 123456
>

现在似乎记录了陷阱,因为系统日志文件(/ var / log / messages)具有以下条目:

Aug  8 15:46:10 <server_name> snmptrapd[29477]: 2017-08-08 15:46:10 localhost
[UDP: [127.0.0.1]:44928->[127.0.0.1]]:#012DISMAN-EVENT-MIB::sysUpTimeInstance = 
Timeticks: (1338382434) 154 days, 21:43:44.34#011SNMPv2-MIB::snmpTrapOID.0 =
OID: NET-SNMP-EXAMPLES-MIB::netSnmpExampleHeartbeatNotification#011NET-SNMP-EXAMPLES-MIB::netSnmpExampleHeartbeatRate
 = INTEGER: 123456

据我所知,一切都设置正确。如果是这样,为什么陷阱句柄不起作用?如何检查陷阱不触发脚本的原因?

提前致谢。

编辑:当我在snmptrapd命令行选项中添加-Ci选项时,我收到以下错误:

No log handling enabled - turning on stderr logging 
: Unknown Object Identifier (Sub-id not found: (top) -> )

1 个答案:

答案 0 :(得分:0)

好的,所以在找了一些之后我找到了答案。

我们没有看到输出的原因是因为snmptrapd作为一个守护进程运行而且没有发送它的标准输出到控制台。可以用

echo "hello" > $HOME/output.txt

和“&#39; hello&#39;出现在output.txt文件中。

另请参阅http://www.linuxquestions.org/questions/linux-newbie-8/net-snmp-trap-handling-4175420577/https://superuser.com/questions/823435/where-to-log-stdout-and-stderr-of-a-daemon