Suche einfachen Terminal Befehl (oneline)für Network-Traffic Darstellung auf OLED-Display

  • Hallo zusammen,


    ich suche einen einfachen Terminal Befehl, damit ich den Netzwerk-Traffic des Raspi's auf ein OLED-Display anzeigen lassen kann. Alle Befehle, die ich bisher nur gefunden habe sind von der Ausgabe her leider viel zu umfangreich, denn ich suche eine einfache Ausgabezeile in der Art wie folgt:

    Code
    IN: 30 Kb/s OUT: 15 Kb/s

    Vielleicht hat ja jemand eine Idee. Danke schon mal.


    VG,
    amDude

  • ..., denn ich suche eine einfache Ausgabezeile in der Art wie folgt:

    Code
    IN: 30 Kb/s OUT: 15 Kb/s

    Evtl. mit:

    Code
    ifconfig <interface> | grep -i rx-bytes

    oder mit:

    Code
    watch -n 3 "ifconfig <interface> | grep -i rx-bytes"

    The most popular websites without IPv6 in Germany.

  • Jürgen Böhm Danke für die Antwort. Das ist ein interessantes Programm, aber die Ausgabe wenn ich nur "iftop" angebe ist leider viel zum umfangreich und nicht wie oben als Beispiel erklärt in einer Zeile mit IN und OUT oder gibt es da noch Optionen zu wie man itop starten kann?


    VG,

    amDude


    p.s. Ich hänge noch ein Foto des OLED-Displays dran. In einer der Zeilen soll in etwa so was stehen wie "Network: OUT: 30Kb/s IN: 15Kb/s"



  • RTFM Wirklich alles mögliche, was im im Netz so gefunden habe. DIe meisten Programme zum Traffic auslesen haben Ausgaben, die viel zu umfangreich sind und leider gleich das ganze Terminal in Beschlag nehmen und keine einfache Zeile wie oben angeben ausgeben.


    rpi444 Dankeschön, ich probiere das gleich mal aus und melde mich dann wieder.


    VG,
    amDude

  • rpi444 Das hat leider nicht geklappt. :-( Der erste Befehl gibt mir leider nur folgendes aus, egal wo ich ihn eingebe:


    Code
    Syntax error: "|" unexpected

    Der zweite Befehl gibt mir folgendes aus:

    Code
    Alle 3,0s: ifconfig <interface> | grep -i rx...  Linux: Sat Feb  3 13:27:44 2018
    sh: 1: Syntax error: "|" unexpected


    VG,

    amDude

  • Jürgen Böhm Danke für den Hinweis. Das habe ich komplett übersehen. Leider bekomme ich immer noch eine Fehlermeldung, wenn ich versuche es im Python-Skript auszuführen.


    Der Code in Python dafür ist wie folgt, hier wird der Befehl eingeben und in den String "NW" geschrieben:


    Code
    cmd = "ifconfig eth0 | grep -i rx-bytes" 
    NW = subprocess.check_output(cmd, shell = True )


    Und hier wird er auf dem Display ausgegeben:

    Code
    draw.text((x, top)     "Network:  " +str(NW), font=font, fill=255)

    Die Fehlermeldung, wenn ich das Phyton Skript starte lautet wie folgt:


    Code
    raceback (most recent call last):
    File "stats2.py", line 119, in <module>
    NW = subprocess.check_output(cmd, shell = True )
    File "/usr/lib/python2.7/subprocess.py", line 219, in check_output
    raise CalledProcessError(retcode, cmd, output=output)
    subprocess.CalledProcessError: Command 'ifconfig eth0 | grep -i rx-bytes' returned non-zero exit status 1


    Ich hoffe wir bekommen das noch hin. :-) Danke nochmal für eure Hilfe. :-)


    VG,

    amDude

  • Leider bekomme ich immer noch eine Fehlermeldung, wenn ich versuche es im Python-Skript auszuführen.


    Code
    subprocess.CalledProcessError: Command 'ifconfig eth0 | grep -i rx-bytes' returned non-zero exit status 1

    Wie ist die Ausgabe von:

    Code
    ifconfig

    ?

    Denn:

    Code
    :~$ ifconfig eth0 | grep -i rx-bytes; echo $?
    eth0: Fehler beim Auslesen der Schnittstelleninformation: Gerät nicht gefunden
    1
    Code
    :~$ ifconfig wlan0 | grep -i rx-bytes; echo $?
    RX-Bytes:88097278 (88.0 MB) TX-Bytes:13897665 (13.8 MB)
    0

    The most popular websites without IPv6 in Germany.

  • Zu beachten gilt: Er möchte es offensichtlich über Python ausführen. Das hätte Er vorher erwähnen müssen, insbesondere was er zur Visualisierung nutzt.


    Script zeigen!



    //EDIT: Das nutze ich:

    Auszug!

  • meigrafd Ich muss gestehen, dass ich erst mal nur nach dem richtigen Befehl zum Auslesen gesucht habe, weil ich dachte ich bekomme die Implementierung in Python selbst hin, aber dem ist wohl nicht so. :-(


    Das komplette Script sieht jedenfalls so aus und da wo noch die IP-Adresse steht - da soll eigentlich der Network-Traffic hin.

    VG,

    amDude

  • rpi444 Ifconfig sagt folgendes:


    VG,

    amDude

  • Das ist etwas faul programmiert... Zum ermitteln der IP oder des Traffics bedarf es keiner "Terminal Befehle" und somit auch kein subprocess. Dafür kann man einfach das sysfs verwenden


    Zum Beispiel zum ermitteln des aktuell verwendeten Rams:

    Zum ermitteln der aktuellen CPU Auslastung:

    Python
    def get_cpu_usage():
    cpu_usage = psutil.cpu_percent(interval=None)
    return cpu_usage

    ..wobei es hierbei eigentlich wichtig wäre eine Langzeitmessung durchzuführen denn sonst sind die Werte nicht 100% korrekt.

    Beachte auch das ich hier das sehr mächtige psutil Module verwende. Das kann auch noch mehr, inkl. der Traffic Geschichte.


    Zum ermitteln der aktuellen CPU Temperatur:

    Python
    def get_cpu_temp():
    with open("/sys/class/thermal/thermal_zone0/temp", 'r') as f:
    content = f.read().splitlines()
    return float(content[0]) / 1000.0

    Und für den Rest hab ich in Beitrag#12 bereits was gepostet.


    Bei dem Python Script welches llutz gepostet hat besteht ein Problem darin dass die geöffneten Dateien nicht wieder geschlossen werden.


    Was ich auch empfehlen kann wäre: https://github.com/MilhouseVH/bcmstat ..beachte nur dass das Script eine falsche Dateiendung hat.

  • meigrafd Danke für die Codes. Ich werde mich da heute Abend mal dransetzen. Den ursprünglichen Quelltext habe ich direkt von Adafruit, also das ist so zu sagen eine Demo von denen. Außer der letzten Zeile mit der Ausgabe, wo ich den Songtitel angezeigen lasse, habe ich da eigentlich nichts dran geändert.


    Naja, ich werde mal versuchen ob ich damit klar komme.


    VG,

    amDude

  • Selbstverstaendlich sollte man das ganze in Python machen, genau wie es die anderen Teilnehmer geschrieben haben!


    Dieses Script holt aus den ersten zehn Zeilen von ifconfig die gewuenschten Angaben raus:


    Code
    ifconfig | awk 'NR < 10 && /bytes/ { printf("%s %s bytes\n",$1,$5); }'