[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