[Eisfair] Frage zu syslogd
Nelson Matias
nelson at anires.de
Fr Mär 29 17:16:13 CET 2024
Hallo Marcus,
Marcus Röckrath schrieb am Fri, 29 Mar 2024 10:54:50 +0100:
>Hier findet sich IMHO eine kurze und klare Anleitung:
>
>https://medium.com/@mezgani/pipes-in-syslog-f10ea02a00d2
Danke. Aber das testen war dann doch nicht ganz so einfach weil bash
solche pipes gern nach Abschluss der Ausgabe auch wieder schließt.
syslogd hält diese dauerhaft offen.
>Jedoch müssten auf diesem Weg die gesamte Verteilung durch ein dauerhaft auf
>dem eis laufendes Skript gemacht werden.
Also ich hab testweise mal eine pipe gemacht:
mkfifo /tmp/syslogpipe
und in einer console läuft dieses script:
#!/bin/bash
#set -x
while true
do
if read input </tmp/syslogpipe
then
host=$(echo $input | awk -v N=4 '{print $N}')
case $host in
"eis")
echo $input >> /root/eis.log
;;
"pfsense")
echo $input >> /root/pfsense.log
;;
*)
echo $input >> /root/error.log
;;
esac
fi
done
ich erhalte so eine eis.log und eine pfsense.log
Es scheint soweit alles zu funktionieren.
Wie bau ich das jetzt am besten in das Eis-system ein?
Meine Überlegung ist es eine service-unit zu machen, die das script startet.
Um dabei zu überprüfen ob die pipe schon existiert wird zu beginn noch
folgendes ausgeführt:
[[ ! -p /tmp/syslogpipe ]] && mkfifo /tmp/syslogpipe
was müsste noch in die unit-Datei damit das VOR syslogd gestartet wird
und das nicht den boot-Vorgang aufhält weil das script selbst ja nicht
mehr stoppen soll.
--
Gruß
Nelson
--
Nelson Matias
Mehr Informationen über die Mailingliste Eisfair