Skip to content

Linux: Rechnerreset mit USB Watchdog

Dog in a yard in a colonia in South Texas Photo: Joshua Matthews
Dog in a yard in a colonia in South Texas
Photo: Joshua Matthews
License: Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
Manchmal sinnvoll: Ein Watchdog. Wenn dieser nicht schon Bestandteil des Mainboards ist besteht die Möglichkeit entweder zu hoffen, daß der Software Watchdog einen Systemhänger erkennt und diesem noch mit einem reboot des Systems entgegentreten kann. Oder man verwendet einen USB Hardwarewatchdog, den es beim freundlichen Chinesen oder in Jeff's Gemischwarenladen relativ günstig gibt. Von beiden Varianten, die natürlich nicht die Ursache des Hängers lösen und - auch das muss gesagt sein, bei der USB Variante eventuell Probleme mit dem Dateisystem verursachen können, möchte ich hier kurz auf letztere eingehen. Denn manchmal ist ein Reset ausreichend, vor allem dann, wenn man nicht an den Rechner kommt, weil man zum Beispiel im Urlaub weilt und der Server daheim augerechnet dann die Grätsche macht.

Der Watchdog selbst besteht aus einer unscheinbaren Platine, an deren einen Ende ein USB Stecker sitzt und am anderen mit einer Stiftleiste versehen ist. Auf dem Stecker selbst sitzen neben ein paar kleineren Bauteilen zwei deutlich sicht- und beim Einstecken hörbare Relais. Geliefert wird das ganze spartanisch in einer Antistatiktüte, nochmal in einer weiteren Plastiktüte verpackt. Mitgeliefert werden zwei ausreichend lange Kabel für die erwähnte Stiftleiste. Kein Handbuch oder Installationsanleitung, was aber nichts macht, da dem aufmerksamen Besteller:*in die Links in der Artikelbeschreibung aufgefallen sind:

Englische Version der Überwachungs-Software Download: http://www.wfyl.cn/dzyj/PCWatchDog_VX_en.rar
Linux Treiber Download: http://www.wfyl.cn/dzyj/USBWatchdog_LINUX.zip
MacOS-Treiber-Download: http://www.wfyl.cn/dzyj/USBWatchdog_MAC.zip
Android Treiber Download: http://www.wfyl.cn/dzyj/USBWatchdogR_ANDROID.zip

Der Installationsvorgang im Terminal unter Ubuntu 22.04.2 LTS x86_64
Der Installationsvorgang im Terminal unter Ubuntu 22.04.2 LTS x86_64
Naja. Ich persönlich lade lieber nichts von Webseiten herunter, die in einer mir unverständlichen Sprache und zudem mit Adobe Flash Animationen versehen sind. Statt dessen fand meine Suchmaschine des Vertrauens heraus, daß es ein git Repository zu diesen Watchdogs gibt, das ein simples Python Script zur Verfügung stellt. Das Repo ist einige Jahre alt, dankenswerter Weise hat Wojciech NiziÅ„ski einen Pull Request eingestellt, der ein Update auf Python3 enthält. Die Dateien zieht man sich im Terminal auf den Zielrechner mit

gh repo clone niziak/usb-watchdog
in das gewünschte Verzeichnis, woraufhin sich die Dateien im Verzeichnis usb-watchdog befinden. Dort startet man nach der obligatorischen Kontrolle der Sicherheit des Quellcodes die Installation als User mit make, danach mit sudo make install das Kopieren der Programmdateien usw.

Der Stick selber wird in den Rechner gesteckt, danach verbindet man die Kabel mit den Mainboard Pfostensteckern für das HDD LED und den Resetschalter. Wichtig sind 2 Punkte:

  • Erst den USB Stick einstecken, dann die Pfostenstecker in eingeschalteten Zustand des Rechners verbinden. Ansonsten kann es sein, daß die Relais auf der Platine im Zustand NO / offen sind, wenn der Rechner eingeschaltet wird und man somit in einer Resetschleife landet.
  • Die Reaktionszeit / Heartbeat, die man in der Datei usb-watchdog.service unter [Service] in der Zeile

    ExecStart=/usr/bin/python3 /usr/local/sbin/watchdog.py --hb 360/dev/ttyUSB0
    einstellt, sollte nicht zu knapp bemessen sein, so daß eine kurzzeitige Rechnerlast nicht als Absturz interpretiert und ein Reset eingeleitet wird. Im Beispiel ist diese auf 360 Sekunden eingestellt, und bezieht sich auf den Watchdog, der als /dev/ttyUSB0 eingebunden wurde.

Quellen: David Gouveia
Hinweis: Einige der Links in diesem Beitrag beziehen sich auf Affilate-Links. Wenn Sie eines der verlinkten Produkte kaufen, unterstützen Sie mich. Das Produkt selbst wird Sie nicht mehr kosten als üblich. Vielen Dank dafür.

Note: Some of the links in this post refer to affilate links. If you buy one of the linked products, you support me. The product itself will not cost you more than usual. Thank you.

Blog Software Update

After a quick update of the PHP version from 7.* to 8.0.25 and a database backup, I had updated the Serendipity version of the blog software used here version from 2.3* to the 2.4.0 beta some time ago in order to be able to make a small contribution to its further development by reporting bugs. There were also some problems, especially with plugins, starting with the comments, the static pages and the Karma plugin. In the meantime, these problems have been solved and a few days ago, after a long development period, the stable version 2.4.0 was published and made available for download. Even after this release, the tireless development team does not sleep but reacts immediately to error messages. Thank you again for your work! This is what I have appreciated so much about Serendipity since version 0.9 2005, the version with which I wrote the first article on 19 November.

Aber ich habe doch gar kein Konto bei der Kreissparkasse...

Immer dann, wenn mir langweilig ist, schaue ich mal in den Spamordner. Neulich trudelte eine recht gut gemachte Mail rein, die von der Kreissparkasse zu stammen scheint. Allerdings mit zwei entscheidenden Fehlern: Weder habe ich ein Konto bei dieser Bank, noch heiße ich so, wie ich in der Mail angesprochen werde. Von der Absenderadresse, die nicht gefälscht war über die Metadaten der Mail (Hearder usw.) oder die Links, auf die darin verwiesen wird, will ich gar nicht erst anfangen:

Screenshot der Mail

Also gut, nach dem Klick auf "Weiter zur Kontrolle" geht es weiter im Browser:

Loginseite der ScammerIm weiteren Verlauf habe ich mal ein paar Phantasiedaten eingegeben, die auf den ersten Blick genau so plausibel erschienen wie diese Phishing Webseite und den ganzen Registrationsprozess durchlaufen. 

Das Ende vom Lied: 

Erfolgreicher Abschluss

Ein wiederholter Aufruf der Seite ist dann nicht mehr möglich, weil die Tracking Url, die durch das Anklicken des "Weiter zur Kontrolle" in der oben genannten email gesetzt wurde, eindeutig mit der Mailadresse an die die Mail ging, verbunden war. Mehr brauchten die Scammer nicht, um durch die Befragung Online-Banking-Zugangsdaten, Geburtsdatum, Telefonnummer sowie die Daten der Sparkassen-Card zu erfahren. In meinem Fall mit fiktiven Daten. Bis auf die Telefonnummer des BKA, die ich zur schnelleren Bearbeitung eventueller Nachfragen angegeben habe...

Problem bei mastodon Installation auf Ubuntu Server 20.04LTS

Weil ich hach einigen Versuchen nur per Zufall darauf gekommen bin - den Hinweis auf dieses Problem hatte ich so noch nirgendwo gefunden:

Q: I encountered a compilation error while executing RAILS_ENV=production bundle exec rails assets:precompile, but no more information is given. How to fix it?

A: Usually it's because your server ran out of memory while compiling assets. Use a swapfile or increase the swap space to increase the memory capacity. Run RAILS_ENV=production bundle exec rake tmp:cache:clear to clear cache, then execute RAILS_ENV=production bundle exec rails assets:precompile to compile again. Make sure you clear the cache after a compilation error, or it will show “Everything's OK” but leave the assets unchanged.

Die Lösung bei unserer Installation bestand allerdings darin, eine nodejs Version 16.x zu verwenden.

Postfix: Mails komfortabel löschen

Das folgende Skript löscht alle E-Mails aus der Mailwarteschlange, die dem als erstes Argument angegebenen regulären Ausdruck entsprechen:

#!/usr/bin/perl
$REGEXP = shift || die "no email-adress given (regexp-style, e.g. bl.*@yahoo.com)!";
@data = qx;
for (@data) {
  if (/^(\w+)(*|\!)?\s/) {
     $queue_id = $1;
  }
  if($queue_id) {
    if (/$REGEXP/i) {
      $Q{$queue_id} = 1;
      $queue_id = "";
    }
  }
}
#open(POSTSUPER,"|cat") || die "couldn't open postsuper" ;
open(POSTSUPER,"|postsuper -d -") || die "couldn't open postsuper" ;
foreach (keys %Q) {
  print POSTSUPER "$_\n";
};
close(POSTSUPER);

Im folgenden Beispiel löscht man alle Nachrichten in der Warteschlange von oder zu der Domain "fuckspamdomain.com":
./postfix-delete.pl fuckspamdomain.com
Im folgenden Beispiel löscht man alle Nachrichten in der Warteschlange, die das Wort "xyz" in der E-Mail-Adresse enthalten:
./postfix-delete.pl xyz
Credits: nixcraft

pfsense: pihole mit pfBlocker NG (fast) arbeitslos machen.

Nur ein kurzer Bookmark für eine ausführliche Anleitung, wie mittels dem pfBlocker NG Plugin Werbung usw. direkt an der Firewall blockiert werden kann. Noch etwas weiter geht dieser Beitrag, der auch beschreibt, wie mittels Zugriffslisten Angriffe oder Scans auf die Firewall blockiert werden können. Zusammen mit Browserplugins wie ublockorigin ergeben sich dann endlich Werbefreie Seiten.

Für kleinere Netze wäre ein derart komplexes Konstrukt Overkill, hier empfiehlt sich piHole, gerade auch in Verbindung mit einem VPN.

Unifying-Receiver mit fwupd aktualisieren

Es liegt ja nicht unbedingt nahe, andauernd die Firmware beispielsweise des Unifying-Receivers usw. zu aktualisieren. Angesichts der Angriffsmöglichkeiten sollte mensch das aber auch als Linux User machen. Windows Programme sind dazu nichjt nötig, das geht in 3 Schritten einfacher mit fwupd. Eventuell sogar als cronjob, um zum Thema Faulheit zurückzukehren.

• Die aktuelle Liste der Firmware abrufen: sudo fwupdmgr get-updates

• Die Liste der angeschlossenen Geräte anzeigen: sudo fwupdmgr get-devices

• Firmware aktualisieren: sudo fwupdmgr update

Mini-HowTo: Green Cell® UPS USV mit Nagios überwachen

Der Status einer günstigen unterbrechungsfreien Stromversorgung (USV), in dem Fall eine (Green Cell® UPS USV Unterbrechungsfreie Stromversorgung 600VA (360W)) soll mittels Nagios abgefragt werden. Das UPS Modell ist mit dem Network UPS Tools (NUT) Treiber blazer_usb kompatibel. Die USV versorgt einen Clientrechner client.lan, Nagios ist auf einem Server server.lan installiert. Unter debian bzw. seinen Ablegern lässt sich die nötige Software auf dem Clientrechner wie gehabt installieren:
sudo apt install nut

Irgendwelche Abhängigkeiten sollten natürlich aufgelöst werden. Danach editieren wir die Datei /etc/nut/ups.conf und fügen am Ende folgende Definition für die GreenCell UPS ein:
[GreenCell]
        driver = "blazer_usb"
        port = "auto"
        desc = "GreenCell USV 600VA"
Die Datei /etc/nut/nut.conf editiert man dann entsprechend dem Verwendungszweck (Standalone/Netzserver/-client)
# Network UPS Tools: example nut.conf
#
##############################################################################
# General section
##############################################################################
# The MODE determines which part of the NUT is to be started, and which
# configuration files must be modified.
#
# This file try to standardize the various files being found in the field, like
# /etc/default/nut on Debian based systems, /etc/sysconfig/ups on RedHat based
# systems, ... Distribution's init script should source this file to see which
# component(s) has to be started.
#
# The values of MODE can be:
# - none: NUT is not configured, or use the Integrated Power Management, or use
#   some external system to startup NUT components. So nothing is to be started.
# - standalone: This mode address a local only configuration, with 1 UPS 
#   protecting the local system. This implies to start the 3 NUT layers (driver,
#   upsd and upsmon) and the matching configuration files. This mode can also
#   address UPS redundancy.
# - netserver: same as for the standalone configuration, but also need
#   some more network access controls (firewall, tcp-wrappers) and possibly a
#   specific LISTEN directive in upsd.conf.
#   Since this MODE is opened to the network, a special care should be applied
#   to security concerns.
# - netclient: this mode only requires upsmon.
#
# IMPORTANT NOTE:
#  This file is intended to be sourced by shell scripts.
#  You MUST NOT use spaces around the equal sign!

MODE=standalone

Auf dem Server wird Nagios am besten aus den Quellen installiert, viele Plugins und auch das Programmpaket selber liegt meistens in recht hm... veralteten Versionen vor. Ich verweise hier mal auf ein recht aktuelles HowTo. ^^

Sobald Nagios läuft, stricken wir uns einen Befehl zum Ansprechen der UPS zusammen und editieren dazu die Datei /usr/local/nagios/etc/objects/commands.cfg
# UPS Check
#
#
define command {

    command_name check_ups
    command_line    $USER1$/check_ups -H $HOSTADDRESS$ -u GreenCell
}

Wie man unschwer erkennen kann, bezieht sich der Befehl in der vorletzten Zeile auf das in der Datei /etc/nut/ups.conf definierte Gerät. Dieser Befehl kann nun in beliebigen Serverkonfigurationen, die Nagios überwacht, angewendet werden. Wir richten nun aber erst einmal die Nagios Konfiguration des Clients ein, der durch die USV versorgt wird und editieren dazu eine neue Datei, in dem Fall nennen wir sie einfach /usr/local/nagios/etc/servers/client.lan.cfg
(...)
define service {
use                     local-service
host_name               client.lan
service_description     GreenCell UPS
check_command           check_ups!-H client.lan -u GreenCell

Ab diesem Zeitpunkt sollte der Status der UPS abgefragt werden können. Welche Werte genau abgefragt werden können ist natürlich von der jeweiligen UPS abhängig und welche Werte von Belang sind. Wie bei den meisten anderen Nagios Plugins können auch bei check_ups die möglichen Parameter durch einen Aufruf auf den Kommandozeile abgefragt werden. Hier man ein wenig Copy & Paste:
nagiosuser@server.lan:/usr/local/nagios/libexec# ./check_ups -h
check_ups v2.3.3 (nagios-plugins 2.3.3)
Copyright (c) 2000 Tom Shields
Copyright (c) 2004 Alain Richard <alain.richard@equation.fr>
Copyright (c) 2004 Arnaud Quette <arnaud.quette@mgeups.com>
Copyright (c) 2000-2014 Nagios Plugin Development Team
    <devel@nagios-plugins.org>

This plugin tests the UPS service on the specified host. Network UPS Tools
from www.networkupstools.org must be running for this plugin to work.

Usage:
check_ups -H host -u ups [-p port] [-v variable] [-w warn_value] [-c crit_value] [-e] [-to to_sec] [-T]

Options:
 -h, --help
    Print detailed help screen
 -V, --version
    Print version information
 --extra-opts=[section][@file]
    Read options from an ini file. See
    https://www.nagios-plugins.org/doc/extra-opts.html
    for usage and examples.
 -H, --hostname=ADDRESS
    Host name, IP Address, or unix socket (must be an absolute path)
 -p, --port=INTEGER
    Port number (default: 3493)
 -u, --ups=STRING
    Name of UPS
 -T, --temperature
    Output of temperatures in Celsius
 -e, --extended-units
    Allow nonstandard units in performance data (used for voltage and temperatures)
 -v, --variable=STRING
    Valid values for STRING are LINE, TEMP, BATTLEFT, BATTPCT or LOADPCT
 -w, --warning=DOUBLE
    Response time to result in warning status (seconds)
 -c, --critical=DOUBLE
    Response time to result in critical status (seconds)
 -t, --timeout=INTEGER:
    Seconds before connection times out (default: 10)
    Optional ":" can be a state integer (0,1,2,3) or a state STRING

This plugin attempts to determine the status of a UPS (Uninterruptible Power
Supply) on a local or remote host. If the UPS is online or calibrating, the
plugin will return an OK state. If the battery is on it will return a WARNING
state. If the UPS is off or has a low battery the plugin will return a CRITICAL
state.

Notes:
 You may also specify a variable to check (such as temperature, utility voltage,
 battery load, etc.) as well as warning and critical thresholds for the value
 of that variable.  If the remote host has multiple UPS that are being monitored
 you will have to use the --ups option to specify which UPS to check.

 This plugin requires that the UPSD daemon distributed with Russell Kroll's
 Network UPS Tools be installed on the remote host. If you do not have the
 package installed on your system, you can download it from
 http://www.networkupstools.org

Send email to help@nagios-plugins.org if you have questions regarding use
of this software. To submit patches or suggest improvements, send email to
devel@nagios-plugins.org

Eine am Server abgesetzte Anfrage ergibt in unserem Fall:
nagiosuser@server.lan:/usr/local/nagios/libexec# ./check_ups -H prusapi.lan -u GreenCell
UPS OK - Status=Online Utility=230,0V Batt=100,0% Load=4,0% |voltage=230,000000;;;0,000000 battery=100,000000%;;;0,000000;100,000000 load=4,000000%;;;0,000000;100,000000

Nagios verwertet diesen Schnipsel so:



Einige Links in diesem Beitrag sind Vorschläge / Einkaufsquellen und sog. Affiliatelinks. Wenn Du etwas über diesen Link kaufst, erhalten wir eine kleine Provision. Der Preis für Dich bleibt derselbe. Vielen Dank für Deine Unterstützung.

Some of the links are suggestions for parts to replicate the thing and affiliate. If you buy something, I get a small commission. The price you pay is the same. Thank you very much.
cronjob