• Hallo liebe Userinnen und User,

    nach bereits längeren Planungen und Vorbereitungen sind wir nun von vBulletin auf Xenforo umgestiegen. Die Umstellung musste leider aufgrund der Serverprobleme der letzten Tage notgedrungen vorverlegt werden. Das neue Forum ist soweit voll funktionsfähig, allerdings sind noch nicht alle der gewohnten Funktionen vorhanden. Nach Möglichkeit werden wir sie in den nächsten Wochen nachrüsten. Dafür sollte es nun einige der Probleme lösen, die wir in den letzten Tagen, Wochen und Monaten hatten. Auch der Server ist nun potenter als bei unserem alten Hoster, wodurch wir nun langfristig den Tank mit Bytes vollgetankt haben.

    Anfangs mag die neue Boardsoftware etwas ungewohnt sein, aber man findet sich recht schnell ein. Wir wissen, dass ihr alle Gewohnheitstiere seid, aber gebt dem neuen Board eine Chance.
    Sollte etwas der neuen oder auch gewohnten Funktionen unklar sein, könnt ihr den "Wo issn da der Button zu"-Thread im Feedback nutzen. Bugs meldet ihr bitte im Bugtracker, es wird sicher welche geben die uns noch nicht aufgefallen sind. Ich werde das dann versuchen, halbwegs im Startbeitrag übersichtlich zu halten, was an Arbeit noch aussteht.

    Neu ist, dass die Boardsoftware deutlich besser für Mobiltelefone und diverse Endgeräte geeignet ist und nun auch im mobilen Style alle Funktionen verfügbar sind. Am Desktop findet ihr oben rechts sowohl den Umschalter zwischen hellem und dunklem Style. Am Handy ist der Hell-/Dunkelschalter am Ende der Seite. Damit sollte zukünftig jeder sein Board so konfigurieren können, wie es ihm am liebsten ist.


    Die restlichen Funktionen sollten eigentlich soweit wie gewohnt funktionieren. Einfach mal ein wenig damit spielen oder bei Unklarheiten im Thread nachfragen. Viel Spaß im ngb 2.0.

Bash-Skript zum Checken von Netzwerkfunktionen und anschließendem Mail-Versand

Raubsau

NGBler

Registriert
29 Aug. 2013
Beiträge
201
Hallo,

da ich programmiertechnisch ein Laie bin, benötige ich Eure Hilfe.

Ich brauche ein Skript, das folgendes macht:

1. Ping 192.168.0.1 (also Router anpingen). Falls Fehlschlag: Ende, dann wird kein Mailversand möglich sein. Logeintrag mit Zeitstempel.
2. Ping google. Falls Fehlschlag: Ende, dann wird kein Mailversand möglich sein. Logeintrag mit Zeitstempel.
3. Ping hostname.local/IP. Falls erfolgreich: Logeintrag mit Zeitstempel.
4. Falls 1. und 2. geht, aber 3. nicht (also der Rechner "hostname" nicht pingbar ist) soll eine Mail mit Zeitstempel versandt werden (über SMTP, am besten mit Verschlüsselung).

Das ganze soll unter Ubuntu laufen und am besten alle 15 min gestartet werden (cron?). Falls eine Mail versandt wurde, sollen keine weiteren Mails folgen, bis ich einen "Reset" des Skripts durchgeführt habe.

Soll also ein kleiner Netzwerkmonitor sein. Sowas wie Nagios ist Overkill, da ich nur einen Rechner überwachen will.

Kann mir das jemand schreiben?

Danke,

Raubsau
 

Kugelfisch

Nerd

Registriert
12 Juli 2013
Beiträge
2.342
Ort
Im Ozean
Als möglicher Ansatz:
[src=bash]#!/bin/bash

LOGFILE='/var/log/netwatchdog.log'
LOCKFILE='/var/lock/netwatchdog_fail.lock'

if ! ping -t1 -c1 192.168.0.1 > /dev/null; then
echo "[`date +'%Y-%m-%d %H:%M:%S'`] Router-Ping fehlgeschlagen! Abbruch." >> $LOGFILE
exit 0
fi

if ! ping -t1 -c1 8.8.8.8 > /dev/null; then
echo "[`date +'%Y-%m-%d %H:%M:%S'`] Google-DNS-Ping fehlgeschlagen! Abbruch." >> $LOGFILE
exit 0
fi

if ping -t1 -c1 192.168.0.42 > /dev/null; then
# Ping erfolgreich - Skript beenden.
exit 0
fi

# Wenn bis hier ausgefuehrt: Router/Google OK, Zielserver FAIL
echo "[`date +'%Y-%m-%d %H:%M:%S'`] Ueberwachter Server ist DOWN!" >> $LOGFILE

if [ -f "$LOCKFILE" ]; then
# lockfile existiert - Kein Mailversand bis manuell entfernt
exit 0
fi

ssmtp empfaenger@example.com <<EOF
From: sender@example.com
To: empfaenger@example.com
Subject: Ueberwachter Server offline

Die automatische Ueberpruefung des Servers um `date +'%Y-%m-%d %H:%M:%S'` ist fehlgeschlagen.
Es wird keine weiteren Nachrichten mehr geben, bis das Lockfile $LOCKFILE manuell entfernt wird.

Gruss,
Watchdog
EOF

if [ $? == 0 ]; then
# lockfile erstellen
touch "$LOCKFILE"

echo "[`date +'%Y-%m-%d %H:%M:%S'`] E-Mail-Benachrichtigung verschickt. Lockfile erstellt." >> $LOGFILE
else
echo "[`date +'%Y-%m-%d %H:%M:%S'`] Fehler beim E-Mail-Versand!" >> $LOGFILE
fi[/src]

Zum E-Mail-Versand wird (da ich davon ausgehe, dass kein lokales E-Mail-Setup vorhanden ist, welches erlauben würde, E-Mails über mail/sendmail zu verschicken) ssmtp genutzt. Dieses muss aus den Paketquellen installiert und über /etc/ssmtp/ssmtp.conf konfiguriert werden, um E-Mails über einen entfernten SMTP-Server zu verschicken. Ausserdem müssen im Skript natürlich die Server-IP-Adressen und die E-Mail-Adressen angepasst werden.

Das Skript kann über einen crontab-Eintrag regelmässig gestartet werden. Der ausführende Benutzer benötigt Leserechte für /etc/ssmtp/ssmtp.conf sowie Schreibrechte für die beiden in LOGFILE und LOCKFILE angegebenen Dateien.
 

accC

gesperrt

Registriert
14 Juli 2013
Beiträge
5.250
Ich verstehe nicht, wieso du das supportest. Es ist zwar nett, aber ich verstehe nicht, warum du dir die Zeit nimmst das zu copy&pasten (ich gehe davon aus, dass du selbst zumindest ein ähnliches Shellscript rumliegen hast), wenn der TS sich nicht die gleiche Zeit nehmen will, um bei google nachzuschauen.
Zwischen "raussuchen und copy&paste" und "bei google suchen und selbst schreiben" besteht zeitlich kaum ein Unterschied.

Wäre ein solches Script derart komplex, dass man es nicht ohne Jahre der Erfahrung schreiben könnte, könnte ich es ja noch verstehen, aber bei so einem trivialen Script muss ich dem TS Faulheit unterstellen.
 

Kugelfisch

Nerd

Registriert
12 Juli 2013
Beiträge
2.342
Ort
Im Ozean
In der Tat hatte ich bereits ein ähnliches Skript, allerdings unter stärkerer Verwendung der cron-Infrastruktur, d.h. mit sinnvolleren Exit-Codes und ohne externes Log oder ssmtp zum Versenden von E-Mails (cron sendet standardmässig ohnehin E-Mails für fehlgeschlagene jobs, dazu muss allerdings ein lokaler MTA eingerichtet sein, welcher E-Mails entweder direkt verschickt oder an einen Smarthost übergibt).
Der Aufwand, es entsprechend anzupassen und einige Zeilen Kommentare einzufügen, war für mich sehr gering - daher sehe ich keinen Grund, es Raubsau vorzuenthalten. Wenn er bis anhin noch nie bash-Skripts geschrieben hat, würde er sicherlich wesentlich länger benötigen, und dabei u.U. sogar Schwachstellen aufreissen. Mit dem geposteten Skripts hat er nun zumindest einen Ansatz.
 

Raubsau

NGBler

Registriert
29 Aug. 2013
Beiträge
201
  • Thread Starter Thread Starter
  • #6
@accC:Das ist für mich nicht trivial, sondern absolut unbekannt. Ich kann nicht mal JavaScript.

@Kugelfisch:
Super, allerbesten Dank! Ich habe das Skript angepasst und es läuft; mit cron muss ich mich noch beschäftigen. Das bekomme ich vermutlich allein hin (ubuntuusers.de).


Ich habe direkt nach vollständiger Hilfe gefragt und sie bekommen - ich sehe hier keine Faulheit, sondern Effizienz. Ohne Kugelfisch hätte ich Stunden mit Trial & Error zugebracht. Diese Zeit konnte ich anders nutzen und habe mich sehr darüber gefreut :)
 

Raubsau

NGBler

Registriert
29 Aug. 2013
Beiträge
201
  • Thread Starter Thread Starter
  • #7
Ich bekomme es doch nicht hin:

Beim Ausführen in der Bahs bekomme ich eine Fehlermeldung, dass das in Zeile 29 gestartete <<EOF bis zum Ende geht und eigentlich ein EOF erwartet wird.
Dabei ist doch ein Zeile 39 eins vorhanden!?
Ich bekomme eine leere E-Mail geschickt und das Lockfile wird nicht erstellt.
Woran soll das nun wieder liegen? Das EOF ist auf jeden Fall vorhanden, ich habe es noch einmal händisch eingetragen, ohne Leerzeichen oder Tab.

edit://
Gelöst! Hinter der From: Zeile muss eine leere Zeile folgen, sonst wird kein Body angehängt. Zeile 33 ist hier also notwendig.

Außerdem:
muss die Option ping -t1 so angepasst werden, dass realistische Werte benutzt werden. 15 oder 20 sind für den Google-Ping zu empfehlen, für den Routerping sollte 1 reichen, für den Ping zum eigentlichen Ziel vielleicht 2 oder 5.
 
Zuletzt bearbeitet:
Oben