Ich schreibe ein Serviceskript systemd
, das stündlich die Bandbreitennutzung protokolliert. Wenn das Netzwerk ausfällt,etwassollte diesem Skript mitteilen, dass das Netzwerk ausgefallen ist und das Skript vorübergehend angehalten wird. Wenn das Netzwerk wieder aktiv ist,Essollte ihm mitteilen, dass das Netzwerk aktiv ist.
Ich verwende Bash, um Skripte unter Ubuntu 15.10 zu schreiben
Bevor Sie eine Lösung vorschlagen, beachten Sie bitte, dass ich hierfür keine Problemumgehung, wie etwa das Anpingen eines Servers, benötige.
Antwort1
Am besten nutzen Sie die ereignisgesteuerten Status, die bereits im Netzwerk-Manager verfügbar sind.
Erstellen Sie eine Datei
NetStatus.x
in/etc
:sudo nano /etc/NetStatus.up
Fügen Sie den folgenden Text hinzu:
Dies ist die NetStatus-Datei. Wenn ihr Name die Erweiterung „up“ hat, bedeutet dies, dass der Netzwerkstatus aktiv ist, während die Erweiterung „down“ bedeutet, dass das Netzwerk inaktiv ist. (Na klar!)
Bearbeiten
/etc/NetworkManager/dispatcher.d/01ifupdown
und fügen Sie die fettgedruckten Aussagen unten hinzu:case "$2" in up|vpn-up) export MODE="start" export PHASE="post-up" exec run-parts /etc/network/if-up.d mv /etc/NetStatus.down /etc/NetStatus.up ;; down|vpn-down) export MODE="stop" export PHASE="post-down" exec run-parts /etc/network/if-post-down.d mv /etc/NetStatus.up /etc/NetStatus.down ;;
Ändern Sie Ihr eigenes Sammlungsskript, um
/etc/NetStatus.up
mit dem folgenden Codeausschnitt die Existenz von zu prüfen, bevor Sie tatsächlich mit der Datenerfassung beginnen:if [ -e /etc/NetStatus.up ] ; then #move your existing collection in here fi
Warum?
Eine Umbenennung ist die schnellste Möglichkeit, einen Status auf jedem Betriebssystem zu ändern, einschließlich diskettenbasierter Systeme, und sie ist äußerst einfach zu verwenden. Ich habe das obige System verwendet, um Serverstatus, Sicherungsstatus und Berechnungsstatus von einfachen MS-DOS-basierten Systemen bis hin zu Supercomputern zu erhalten.