Я пытаюсь выполнить команду exec для проверки через snmp.
Я использую Debian 6.0
Вот мой файл snmpd.conf
rwcommunity public 172.23.129.0/29
syslocation "Blah
syscontact admin@domain.net
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 должно хватить в любом случае? Это заставляет меня думать, что это не похоже на проблему с разрешением, даже с этим сообщением об ошибке.
Надеюсь, кто-нибудь когда-либо сталкивался с этой проблемой и сможет дать мне несколько советов: /
Большое спасибо за любой совет :)
snmpd также может работать с другим аккаунтом, чем root.
Выезд, выполнив тестовый скрипт, который выполняет id.
Вы сказали, что сценарий находится в /tmp
; твой /tmp
перегородка установлена noexec
случайно? Это может быть случайным источником путаницы.
Не уверен, что это именно твоя проблема. Мы столкнулись с тем же, но с extend
, где имя является обязательным, а 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