![linux snmptrapd,如何写入自定义日志文件,或执行自定义命令](https://linux22.com/image/763002/linux%20snmptrapd%EF%BC%8C%E5%A6%82%E4%BD%95%E5%86%99%E5%85%A5%E8%87%AA%E5%AE%9A%E4%B9%89%E6%97%A5%E5%BF%97%E6%96%87%E4%BB%B6%EF%BC%8C%E6%88%96%E6%89%A7%E8%A1%8C%E8%87%AA%E5%AE%9A%E4%B9%89%E5%91%BD%E4%BB%A4.png)
Ubuntu 18.04 和 20.04,snmptrapd,版本大约 5.7.3。
陷阱事件进入系统日志。很好。
如何让日志文件转到 syslog 之外的自定义位置?
正如在许多互联网答案和教程中所见,logoption 或 logOption 在 snmptrapd.conf 中不起作用。
您可以将 logoption 放入 snmp.conf,但这样所有 snmp 日志都会进入那里,而不仅仅是陷阱。例如,运行 snmpwalk 时出现的错误消息。我找不到创建仅包含 snmptrapd 收到的 snmp 陷阱的日志文件的方法。
我认为一个巧妙的解决方法是执行和 traphandle,然后让脚本写入磁盘。但是 traphandle 似乎没有传递参数?
就像是 :
authCommunity log,execute trap-dat
traphandle default /usr/local/bin/logger.rb
所以你想让 snmptrapd 做一些事情。你如何传递参数?你如何让这个东西写入自定义日志文件?
有一种令人讨厌的方法来编写自定义日志文件:更改或覆盖 snmptrapd 的启动单元,如:/lib/systemd/system/snmptrapd.service 或 /etc/whatever 中的覆盖
像这样 :
ExecStart=/usr/sbin/snmptrapd -Ln -f -Lf /var/log/snmptrapd.log
答案1
systemd 启动单元/服务是唯一的方法。
ExecStart=/usr/sbin/snmptrapd -Ln -f -Lf /var/log/snmptrapd.log
答案2
在 centos 上,您可以将以下行添加到 /etc/snmp/snmptrapd.conf 文件
[snmp] logOption f /var/log/snmptrapd.log
当 selinux 设置为强制执行时:
chcon -t snmpd_log_t /var/log/snmptrapd.log