Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?
24.07.2021, 23:38:46

.
Einloggen mit Benutzername, Passwort und Sitzungslänge

Mitglieder
  • Mitglieder insgesamt: 25776
  • Letzte: joba48
Statistiken
  • Beiträge insgesamt: 746691
  • Themen insgesamt: 60054
  • Heute online: 375
  • Am meisten online: 2287
  • (22.01.2020, 19:20:24)
Benutzer Online

Autor Thema:  Netzwerkauslastung über Script abfragen  (Gelesen 968 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Re: Netzwerkauslastung über Script abfragen
« Antwort #15 am: 10.03.2021, 12:41:38 »
Mittlerweile habe ich auf meinem Küchenradio LibreElec mit Kodi 18.9 installiert. Ich kann nun nach wie vor Internet Radio damit hören und sogar Live TV gucken. Wenn das Küchenradio an ist und ich "smbstatus -b" eingebe im Terminal, sieht mein Server PC die IP Adresse des Küchenradios.
Nach wie vor würde ich also sehr gerne es irgendwie hinbekommen, den Datentraffic auf meinem Server PC mitzuloggen und ein Herunterfahren nur zulassen, wenn fast kein Datentraffic stattfindet und natürlich auch nur dann, wenn alle anderen Bedingungen aus der Autosuspend erfüllt sind für das Herunterfahren.
Jemand noch eine Idee?

Re: Netzwerkauslastung über Script abfragen
« Antwort #16 am: 10.03.2021, 16:38:26 »
Kannst du mal die ganze Ausgabe von smbstatus -b hier als Codeblock zeigen? Wichtig ist vor allem die Info, ob dein Küchenradio gerade von dem PC was abspielt oder nicht.
Gruß
Whitie

Re: Netzwerkauslastung über Script abfragen
« Antwort #17 am: 11.03.2021, 09:37:12 »
Hi Whitie, ich werde am Wochenende mal eine Ausgabe von  "smbstatus -b"  zeigen, wenn das Küchenradio gerade von dem PC was abspielt oder nicht.

Gestern habe ich mich wieder mit diesem Thema beschäftigt. Ich habe auf meinem Laptop ein Script geschrieben das im Prinzip folgendes macht:

alt_out_Traffic=aktueller_out_Traffic
while do
   sleep 5
   differenzTraffic=aktueller_out_Traffic - alt_out_Traffic
   if (differenzTraffic > Traffic_Schwellwert)
      # viel Traffic
      lösche suspend_counter_datei
   fi
   alt_out_Traffic = aktueller_out_Traffic
end

Für Traffic_Schwellwert muß ich einen sinnvollen Wert ermitteln, der größer ist als der "Leerlauf Traffic" und kleiner ist als der "MP3 Musik hören Traffic". Wenn der differenzTraffic größer als der Traffic_Schwellwert ist, ist viel Traffic und es wird eine Datei "suspend_counter" gelöscht. Diese Datei wird von dem Autosuspend Script erzeugt mit dem Kommando "touch".

Es ist so: wenn das Autosuspend Script festgestellt, daß der PC herunterfahren darf, wird mit dem Kommando "touch" die Datei "suspend_counter" erstellt und das Autosuspend Script wird verlassen. Beim nächsten Aufruf des Autosuspend Scripts wird wieder festgestellt, daß der PC herunterfahren darf. Wenn nun auch noch die Datei "suspend_counter" vorhanden ist, legt das Script den Zeitpunkt für das nächste Hochfahren fest und legt den PC dann schlafen.

Wenn ich nun über mein Script festelle, daß viel Traffic vorhanden ist, lösche ich die Datei "suspend_counter". Wenn nun das Autosuspend Script durchläuft und keine "suspend_counter" Datei findet, legt das Autosuspend Script die "suspend_counter" Datei wieder neu an. Meine Script löscht sie aber immer wieder und zwar solange, wie viel Traffic vorhanden ist.

Das Autosuspend Script lasse ich alle 15 Minuten laufen, mein Script würde ich vielleicht jede Minute laufen lassen. Das werde ich am Wochenende vielleicht mal testen.

Re: Netzwerkauslastung über Script abfragen
« Antwort #18 am: 11.03.2021, 19:04:36 »
Hier mal was in Python:
#!/usr/bin/env python3

import sys
import time

from pathlib import Path


USAGE_FILE = Path('/proc/net/dev')
SUSPEND_FILE = Path('/Pfad/zu/suspend_counter_datei')


def get_current_packet_count(interface):
    usage_line = None
    with USAGE_FILE.open() as fp:
        for line in fp:
            if line.strip().startswith(interface):
                usage_line = line.strip()
    if usage_line is not None:
        return int(usage_line.split()[10])
    return 0


def main():
    interface = sys.argv[1]
    max_count = int(sys.argv[2])
    first = get_current_packet_count(interface)
    time.sleep(5.0)
    second = get_current_packet_count(interface)
    if (second - first) < max_count:
        print('shutdown')
    else:
        if SUSPEND_FILE.exists():
            SUSPEND_FILE.unlink()


if __name__ == '__main__':
    if len(sys.argv) != 3:
        print('Usage: net_usage.py <INTERFACE> <MAX_COUNT>')
    else:
        main()

Gruß
Whitie