У меня проблема с модулем omprog в Rsyslog при попытке заставить его взаимодействовать с моим кодом python (2.7). Предполагается, что Rsyslog отправляет нужные сообщения на стандартный ввод python, но ничего не получает. Интересно, был ли кто-то еще более успешным с этим модулем вывода?
Rsyslog.conf
module(load="omprog")
template(name="sshmsg" type="string" string="%msg%")
if ($programname == "myprogram") then {
action(type="omprog"
binary="/usr/sshtrack.py"
template="sshmsg")
}
Если я заменю двоичный файл тестовым сценарием оболочки, содержащим строка ниже, это работает
test. sh
!#/bin/sh
cat /dev/stdin >> /var/log/ssh2.log
Я также попытался прочитать stdin из сценария оболочки в переменную, используя
var="$(</dev/stdin)"
и
var="$(cat /dev/stdin)"
Ни один из вышеперечисленных результатов var не содержит ничего
Наконец, при попытке чтения стандартного ввода из python сценарий, я ничего не получаю. Иногда появляется сообщение об ошибке ресурса недоступно (errno 11).
sshtrack.py
#!/usr/bin/python
import sys
f = open("/var/log/ssh2.log", "a", 0)
while True:
f.write("Starting\n")
for line in sys.stdin:
f.flush()
msg = line.strip()
if not msg:
break
f.write(msg)
f.write("\n")
f.close()
Проблема, похожая на , не может правильно читать из STDIN , за исключением добавления неблокирующего флага, ничего не сделал.