Anwendungen

Needrestart in Checkmk einbinden

02. Juli 2024 · Anwendungen · andreas · Kein Kommentar

Mit needrestart gibt es für Lunix-basierte Hosts eine Anwendung, die sich in den dpkg,- rpm- oder pacman-Mechanismus einklinkt und nach einer Aktualisierung des Systems mitteilt, ob und welche Systemkomponenten einen Neustart benötigen.

Needrestart: Critical

Neben zahlreichen Konfigurationsmöglichkeiten bietet needrestart auch einen Nagios-kompatiblen Ausgabemodus zur Einbindung in das Monitoring-System:

# needrestart -p OK - Kernel: 6.1.0-22-amd64, Services: none, Containers: none, Sessions: none|Kernel=0;0;;0;2 Services=0;;0;0 Containers=0;;0;0 Sessions=0;0;;0

Checkmk ist in der Lage, über MRPE auch Nagios-kompatible Skripte zu verwenden, allerdings geht es auch einfacher mit Hilfe eines Local Checks:

A local check can be written in any programming language supported by the target host. The script must be constructed so that each check produces a status line consisting of four parts. Here is an example:

0 “My service” myvalue=73 My output text which may contain spaces

Die Skripte werden im Verzeichnis “/usr/lib/check_mk_agent/local/” abgelegt und automatisch vom Agenten mitverarbeitet.

Needrestart: OK

Für needrestart reicht ein kleiner Wrapper, der das Ergebnis des Checks in einen numerischen Status wandelt und die Meldung selbst als Statusdetail ausgibt. Der Dienstname wird auf “needrestart” gesetzt und auf die Übermittlung von Metriken verzichtet.

#!/usr/bin/bash NEEDRESTART="$(/usr/sbin/needrestart -p)" if [[ "$NEEDRESTART" =~ ^OK ]]; then STATE=0 elif [[ "$NEEDRESTART" =~ ^WARN ]]; then STATE=1 elif [[ "$NEEDRESTART" =~ ^CRIT ]]; then STATE=2 else STATE=3 fi echo "$STATE \"needrestart\" - $NEEDRESTART"

Nachdem das Skript angelegt und ausführbar gemacht wurde, muß auf dem Host nur noch ein Service-Discovery durchgeführt werden damit der neue Service übernommen werden kann.


ALSA kann auch Gerätenamen

25. Juni 2024 · Anwendungen · andreas · Kein Kommentar

Auf einem Raspberry Pi hatte ich das Problem, daß ALSA bei jedem Neustart des Systems die Reihenfolge der Ausgabegeräte neu sortierte:

$ cat /proc/asound/cards 0 [Headphones ]: bcm2835_headpho - bcm2835 Headphones bcm2835 Headphones 1 [PMA50 ]: USB-Audio - PMA-50 D & M Holdings Inc. PMA-50 at usb-3f980000.usb-1.1.3, high speed 2 [vc4hdmi ]: vc4-hdmi - vc4-hdmi vc4-hdmi

Mal war der PMA-50 als Karte 1 verfügbar, mal wurde ihm die 2 zugewiesen und als Folge daraus war das in der “alsa.conf” festgelegte Ausgabegerät nicht immer das von mir eigentlich gewünschte und der externe DAC blieb stumm.

/etc/asound.conf
pcm.!default { type hw card 1 } ctl.!default { type hw card 1 }

ALSA kann statt der Nummer der Karte (wie in gefühlt 99% aller Beispiele zu finden) auch deren Namen verwenden werden. Eine Liste aller gültigen Geräte findet sich unter “/proc/asound/”:

$ ls -l /proc/asound/ dr-xr-xr-x 4 root root 0 25. Jun 08:42 card0 dr-xr-xr-x 4 root root 0 25. Jun 08:42 card1 dr-xr-xr-x 8 root root 0 25. Jun 08:42 card2 ... lrwxrwxrwx 1 root root 5 25. Jun 08:42 Headphones -> card0 ... lrwxrwxrwx 1 root root 5 25. Jun 08:42 PMA50 -> card2 ... lrwxrwxrwx 1 root root 5 25. Jun 08:42 vc4hdmi -> card1 ...

Nach einer Anpassung der “alsa.conf” funktioniert der USB-DAC unabhängig von der zugewiesenen Gerätenummer:

/etc/asound.conf
pcm.!default { type hw card PMA50 } ctl.!default { type hw card PMA50 }

Diskussionen um Debian-Paket KeepassXC

24. Mai 2024 · Anwendungen · andreas · Kein Kommentar

In den letzten Tagen sorgte eine Änderung am “KeepassXC"-Paket in Debian für hitzige Diskussionen.

Der grundlegende Gedanke, ein Paket mit minimalem und ein Paket mit vollständigem Funktionsumfang anzubieten ist hierbei nicht ungewöhnlich: eine solche Aufspaltung gibt es bis hin zu den Desktop-Umgebungen, wo z.B. bei der Installation zwischen einem “gnome” und einem “gnome-core"-Paket gewählt werden kann, welches nur den minimal notwendigen Umfang zu Betrieb der Desktopumgebung enthält.

Was allerdings nicht nur mir unangenehm aufstößt ist die Vorgehensweise des Paketbetreuers, der statt der Erstellung eines zusätzlichen “keepassxc-core”-Pakets das ursprüngliche “keepassxc”-Paket um bestehende Funktionalität erleichtert und somit bestehende Installationen mit der nächsten Aktualisierung beschneidet.

Dies ist offensichtlich ohne vorherigen Dialog mit den KeepassXC-Entwicklern geschehen und führt dazu, daß nun vermehrt Anwender bei KeepassXC (nicht vorhandene) Fehler melden, denn

This will be painful for a year as users annoyingly do not read the NEWS files they should be reading but there’s little that can be done about that. [Quelle]

Dieser Satz und vor allem eine Aussage wie

Users who need this crap can install the crappy version but obviously this increases the risk of drive-by contributor attacks. [Quelle]

lässt aber nicht unbedingt (nur) auf sachliche Hintergründe schließen, sondern zeigt deutlich, wo das eigentliche Problem liegt - und erinnert mich von der Grundeinstellung an den Münchner OB Dieter Reiter.

Aktualisierungen:
2024-06-01: Inzwischen scheint die Diskussion beigelegt und der Maintainer hat sich davon überzeugen lassen, daß sein Vorgehen subobtimal war. Wie in Bug 1071847 zu lesen, wird es nun doch ein “keepassxc-minimal”-Paket geben.

Textmails in Thunderbird importieren

12. März 2024 · Anwendungen · andreas · Kein Kommentar

In einem Verzeichnis auf der lokalen Festplatte schlummerten noch ein paar Uralt-Mails, welche alle als einzelne Textdateien gespeichert waren. Leider bietet Thunderbird keine Möglichkeit, über die Oberfläche einen Importvorgang anzustoßen, aber es geht auch recht einfach durch die Hintertür.

In der Oberfläche wird in den “Lokalen Ordnern” mittels Rechsklick ein neuer Ordner “GanzalteMails” angelegt. Dies bewirkt, daß im Profilverzeichnis ("~/.thunderbird/PROFILNAME/Mail/Local Folders/") zwei Dateien “GanzalteMails” und “GanzalteMails.msf” erzeugt werden. In diesem Ordner wird auf Dateisystemebene nun händisch ein neuer Unterordner “GanzalteMails.sbd” erzeugt, in welchen die Textdateien kopiert werden.

Damit Thunderbird die Texte auch tatsächlich als Mailbox-Files erkennt, ist es wichtig, daß jede Datei - wie in RFC 4155 “The application/mbox Media Type” beschrieben - mit einem korrekten Vorspann beginnt:

mbox database files can be recognized by having a leading character sequence of “From”, followed by a single Space character (0x20), followed by additional printable character data

Was genau nach dem Leerzeichen kommen muß, kann sich zwischen verschiedenen Anwendungen unterscheiden, weshalb die meisten Mailclients fast alles akzeptieren, was auch nur halbwegs standardkonform aussieht. Thunderbird genügt z.B. ein

From -

als Kennzeichnung. Wer dies einfach und komfortabel an den Anfang aller “*.txt”-Dateien einfügen möchte, kann sed als Werkzeug verwenden:

$ sed -i '1 i\From -' *.txt

Dateien in einer Samba-Freigabe ausführen

26. Januar 2024 · Anwendungen · andreas · Kein Kommentar

Nach dem Kopieren einiger Dateien auf eine Samba-Freigabe weigerte sich Windows, die Dateien auszuführen.

Die Lösung dokumentiert das Samba-Wiki unter dem Hinweis “Making Files Executable”: in der Standard-Einstellung dürfen nur Dateien, welche auf dem Host das “Executable”-Recht haben, auch ausgeführt werden.

Hier hilft ein Aufruf von “find” die notwendigen Rechte zu verteilen:

$ find . -name "*.exe" -exec chmod +x {} \;

Je nach Einsatzszenario muß auch noch die Einstellung

acl allow execute always = yes

entweder im globalen Bereich oder in der Definition einer Freigabe in der “smb.conf” hinzugefügt werden.