我正在尝试执行命令通过 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 应该足够了吗?这让我觉得,即使出现此错误消息,这看起来也不像是权限问题。
我希望有人遇到过这个问题,并能给我一些建议:/
非常感谢您的建议:)
答案1
您说脚本位于/tmp
;您的/tmp
分区noexec
是否已安装?这可能会偶尔引起混淆。
答案2
snmpd 也可能使用与 root 不同的帐户运行。
通过执行执行“id”的测试脚本进行检查。
答案3
不确定这是否正是您的问题。我们遇到了同样的问题,但使用的是extend
,其中 name 是必需的,而 OID 不是。因此,我们配置错误的 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