CheckHost – Netzwerkverbindungen überwachen



CheckHost ist ein BASH-Shell Skript zur Überwachung der Verfügbarkeit von Netzwerkgeräten und/oder der Internetverbindung. Das Skript basiert auf dem ubuntuusers Ping-Alive Beispiel und wurden mit einem zusätzlichen Parameter für den Hostbezeichner erweitert, der die Zuordnung der E-Mail-Benachrichtigungen vereinfacht. Es wurde auch die Protokollierung der ping-Anfragen in dem Verzeichnis /var/log/checkhost hinzugefügt. Die Log-Dateien werden täglich neu erstellt und älter als 30-Tage gelöscht. Zum Versenden der E-Mail-Benachrichtigungen wird standardmässig der sendmail-Befehl benutzt, der zum Beispiel von sSMTP und Postfix verwendet wird (weitere MTA’s wurden nicht getestet).

Skript-Ablauf

 

CheckHost-Skript-Flussdiagramm
CheckHost-Skript-Flussdiagramm

Das Skript sendet in regelmäßigen Abständen eine ping-Anfrage an den im ersten Parameter angegebenen Host. Wenn die Verbindung zum Host abgebrochen oder wiederhergestellt wurde, schickt das Skript eine E-Mail-Benachrichtigung an die als den zweiten Parameter übergebenen Adressen. Das Abfrageintervall ist von der Einstellung des Cronjobs während der Installation abhängig und kann beliebieg angepasst werden.

Die E-Mail-Benachrichtigungen werden mit dem Befehl sendmail verschickt. Bei dem Mail Transfer Agent (MTA) Postfix ist es ein eigenständiges Tool. sSMTP erstellt bei der Installation eine sendmail-Verknüpfung auf sich selbst, so dass eine zusätzliche Installation von Postfix nicht notwendig ist. Um die E-Mails zu senden ist das Ressourcen schonende sSMTP die bessere Wahl (zum Beispiel auf einen Raspberry Pi).

Voraussetzungen

Für die Ausführung des Skripts sind folgende, installierte Software vorausgesetzt:


Installation

  1. CheckHost herunterladen und wenn notwendig auf das Zielgerät übertragen.
  2. Die heruntergeladene GZIP-Archiv-Datei entpacken:
    $ cd /home/$USER/Downloads
    $ tar -xvzf checkhost_1.0.1.tar.gz
    $ cd checkhost_1.0.1

    Der Ordner checkhost_1.0.1 enthält folgende Dateien:

    • checkhost.jpg – Skript Flussdiagramm
    • checkhost.tar.gz – Archiv mit dem Skript und der README Datei
    • README – Skriptbeschreibung und Installationsanleitung
  3. Die Archiv-Datei checkhost.tar.gz nach /etc entpacken:
    $ sudo tar -xvzf checkhost.tar.gz -C /etc
  4. Die Zugriffsberechtigungen setzen:
    $ sudo chmod -R 755 /etc/checkhost
  5. Den Eigentümer-Benutzer und die Eigentümer-Gruppe ändern:
    $ sudo chown -R root:root /etc/checkhost
  6. Crontab mit root-Rechten öffnen:
    $ sudo crontab -e
  7. Die Zeile nach dem folgenden Muster hinzufügen:
    */5 * * * * /etc/checkhost/checkhost.sh host recipients [hostname] > /dev/null 2>&1

    host – IP-Adresse oder Domäne
    recipients – eine oder mehrere E-Mail-Adressen für die Benachrichtigungen. Mehrere Adressen werden mit Komma getrennt und in einfache Einführungsstriche eingeschlossen (‚egon@gmx.de,ziggi@arcor.de‘)
    hostname – (optional) der Name oder eine Beschreibung des Hosts. Dieser wird so in den E-Mails für eine bessere Zuordnung gennant. Namen mit Leerzeichen sollen in einfache Einführungsstriche eingeschlossen werden.

Möchte man weitere Hosts überwachen, einfach eine zusätzliche Zeile mit der Host-IP und gegebenfalls einem anderen Hostnamen in die Crontab hinzufügen.



Anzeige

Ausführung

Das checkhost.sh Skript wird je nach cronjob-Einstellungen regelmäßig oder manuell ausgeführ. Solange die Verbindung zum Host existiert, wird nur die ping-Ausgabe in die Log-Datei geschrieben. Ist der Host nicht mehr erreichbar, wird zusätzlich eine E-Mail-Benachrichtigung verschickt (grün unterstrichen ist der als dritter Parameter angegebene Hostbezeichner).

Host not available
E-Mail Benachrichtigung wenn der Host nicht verfügbar!

Solange der Host auf die ping-Anfragen nicht antwortet, werden nur die Log-Informationen geschrieben. Beim Wiederaufbau der Verbindung wird zusätzlich eine E-Mail-Benachrichtigung verschickt. Sie enthält unter anderen das Datum und die Uhrzeit, wann der Host nicht mehr erreichbar und wie lange er offline war.

Host available
E-Mail Benachrichtigung wenn der Host wieder verfügbar!

Test

Zuerst die Log-Datei (/var/log/checkhost/checkhost-xxx.xxx.xxx.xxx_YYYY-MM-DD.log) überprüfen, ob regelmäßig nach dem vorgegebenen Intervall die ping-Ausgabe geschrieben wird.


Bei einer Überwachung der Internetverfügbarkeit reicht es die Internetverbindung zu trennen. Zum Beispiel durch das Abziehen des LAN-Kabels, WLAN Abschaltung oder das Deaktivieren der Internetverbindung in der Netzwerkkonfiguration.

Bei Netzwerkgeräten kann entweder wie bei Internet vorgegangen oder nur das betroffene Gerät vom Netzwerk getrennt oder ausgeschaltet werden.

Nach dem im Cronjob vorgegebenen Zeitintervall die Verbindung wieder herstellen und die E-Mail-Benachrichtigung abwarten.

Bei einer Internetverfügbarkeitsüberwachung, anders als bei Netzwerkgeräten, wird die E-Mail-Benachrichtigung über die Host-Verbindungstrennung erst empfangen wenn die Verbindung wieder hergestellt wurde. Logischerweise kann ohne einen Internetzugriff keine E-Mail verschickt werden.

CheckHost Download



BASH-Befehl Alias erstellen



Lange oder schwer zu merkende Shell-Befehle können mit kürzeren Alias-Namen aufgerufen werden. Die Ersatznamen müssen nur der Shell bekannt gemacht werden.

Dazu die Datei /etc/bash.bashrc zum Editieren öffnen:

$ sudo gedit /etc/bash.bashrc

Am Ende der Datei hinzufügen:

# Alias definitions
if [ -f /etc/bash_aliases ]; then
 . /etc/bash_aliases
fi

Speichern und schliessen.


Die Datei /etc/bash_aliases erstellen:

$ sudo gedit /etc/bash_aliases

In dieser Datei die Aliases definieren. Zum Beispiel:

alias ll='ls -l'

Nach dem Speichern der Datei die BASH-Sitzung mit exit schliessen und wieder neu öffnen, damit die Alias-Einträge übernommen werden.