[Eisfair] Frage zu syslogd

Marcus Röckrath marcus.roeckrath at gmx.de
Fr Mär 29 17:51:38 CET 2024


Hallo Nelson,

Nelson Matias wrote:

> 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.

1. Erzeugen der Pipe, was man sich von systemd beim Boot erledigen lassen
kann.

Dazu legen wir in /usr/lib/tmpfiles.d z. B. die Datei syslogpipe.conf mit
folgendem Inhalt an:

-------------------------------------------------------
#
# See tmpfiles.d(5) for details
#
# Type Path        Mode User Group Age Argument

p /run/syslogpipe 0664 root root
-------------------------------------------------------

Statt /run kannst du natürlich auch einen andwern Pfad nehmen; /run liegt
übrigens auf einem tmpfs.

Falls nicht existent. wird von systemd beim Boot das aneggebene File als
pipe angelegt; das sollte vor syslogd geschehen, was man ja dann sieht, ob
dem so ist.

Für tests ohne reboot, legst du den dann erstmal wie schon beim bisherigen
testen manuell an.


2. Nun brauchen wir noch einen Service, der dien Skript startet:

In /usr/lib/systemd/system legen wir nun ein service-File syslogpipe.service
an; Inhalt etwa so:

-------------------------------------------------------
[Unit]
Description=SysLog Pipe analyzer
After=syslogd.service
Requires=syslogd.service

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/path/zu/deinem/script.sh

[Install]
WantedBy=multi-user.target
-------------------------------------------------------


3. Damit der service beim Boot automatisch gestartet wird:

service daemon-reload
service enable syslogpipe


4. Sofortiges Starten:

service start syslogpipe


Eine Datei innerhalb der /usr/lib/tmpfiles.d|system.d sind updatefest,
solange du keinen Dateinamen wählst, den schon andere Pakete nutzen;
syslogpipe ist da IMHO originell genug.

Obiges ohne Gewähr für noch kleinere Typos oder Denkfehler.

Du musst natürlich in der Syslog-Konfiguration die Ziele (Target) auf die
Pipe setzen, wobei die Pipe möglichst dann schon existieren sollte.

-- 
Gruß Marcus
[eisfair-Team]


Mehr Informationen über die Mailingliste Eisfair