我正试图通过执行命令执行通过snmp的检查。
我在Debian 6.0上
这是我的snmpd.conf文件
rwcommunity public 172.23.129.0/29 syslocation "Blah syscontact [email protected] sysname belleville.domain.net sysdescr "Syslog Domain Server" disk / load 5 10 10 #exec 1.3.6.1.4.1.2021.8 /usr/bin/python /usr/local/domain/tools/check-syslog.py exec 1.3.6.1.4.1.2021.8 /usr/bin/python /tmp/check-syslog.py
这里是snmpget的输出:
snmpget -Of -cpublic -v1 belleville 1.3.6.1.4.1.2021.8.1.101.1 .iso.3.6.1.4.1.2021.8.1.101.1 = STRING: "/usr/bin/python: can't open file '/tmp/check-syslog.py': [Errno 13] Permission denied"
我不明白权限问题,因为文件的权限是711,而且拥有者root:root位于/ tmp文件夹中。 无论如何,这个脚本是由root用户执行的,不是吗? 所以700就足够了吗? 这让我觉得这看起来不像权限问题,即使有这个错误信息。
我希望有人遇到这个问题,并能够给我一些build议:/
非常感谢您的任何build议:)
你说过脚本位于/tmp ; 你的/tmp分区挂载noexec的任何机会? 这可能是一个偶然的混乱的来源。
snmpd可能会运行一个不同于根的accout。
通过执行一个执行“id”的testing脚本来检查。
不知道,这确实是你的问题。 我们遇到了同一个,但extend ,其中名称是必需的,OID不是。 所以我们错误configuration的snmp只执行了不是可执行文件的命令行的最后一部分。
您的变体:
exec 1.3.6.1.4.1.2021.8 /usr/bin/python /tmp/check-syslog.py
将定义/usr/bin/python和名称,并尝试仅执行/tmp/check-syslog.py而不使用解释器
用扩展名check-syslog更正一个:
exec 1.3.6.1.4.1.2021.8 check-syslog /usr/bin/python /tmp/check-syslog.py