В настоящее время я пытаюсь настроить приложение Syslog для запуска определенного сценария python при обнаружении определенного сообщения, однако у меня возникают проблемы с вызовом сценария python. Ниже представлен текущий файл конфигурации.
Чтобы подтвердить, я вижу журналы в месте назначения журнала, однако место назначения программы по какой-то причине не работает.
Для информации я использовал https://syslog-ng.com/documents/html/syslog-ng-ose-latest-guides/en/syslog-ng-ose-guide-admin/html/reference-filters.html#filter-message
для справки, конфигурация немного запутана, но это потому, что я все еще на начальных этапах.
@version: 3.5
@include "scl.conf"
@include "`scl-root`/system/tty10.conf"
# Syslog-ng configuration file, compatible with default Debian syslogd
# installation.
# First, set some global options.
options { chain_hostnames(off); flush_lines(1); use_dns(no); use_fqdn(no);
owner("root"); group("adm"); perm(0640); stats_freq(0); keep-
hostname(yes);
};
#destination dest_triggers{ program("/bin/echo 'haha' >> /tmp/test");};
destination dest_triggers{ program("python
/home/jonathan/PycharmProjects/FYP/syslog.py >> /tmp/testfile");};
filter int_down_trigger {
message(".*changed state to down");
};
source s_net { syslog(transport("udp"));};
destination d_network_local { file("/var/log/messages_${HOST}"); };
log{source(s_net); destination(d_network_local); };
#log{source(s_net); filter(int_down_trigger); destination(dest_triggers); };
log{source(s_net); destination(dest_triggers); };
@include "/etc/syslog-ng/conf.d/*.conf"
Скрипт Python:
import time
with open('downlog', 'a+') as f:
f.write(time.strftime("%A, %d %B - %X" )+"A link went down\n")
f.close()