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
    1. IN: 30 Kb/s OUT: 15 Kb/s

    Vielleicht hat ja jemand eine Idee. Danke schon mal.


    VG,
    amDude

  • Ohne es am Oled ausprobiert zu haben; iftop


    MfG


    Jürgen


    Jahrelang wurde gesagt: Das geht nicht, das gibt es nicht und das war schon immer so.
    Und dann kam einer, der wusste das nicht, und hat es dann einfach gemacht.

    Meine Projekte                       :dau2:                            Avatar

  • 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
    1. Syntax error: "|" unexpected

    Der zweite Befehl gibt mir folgendes aus:

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


    VG,

    amDude

  • <interface> durch z.B. eth0 ersetzen


    MfG


    Jürgen


    Jahrelang wurde gesagt: Das geht nicht, das gibt es nicht und das war schon immer so.
    Und dann kam einer, der wusste das nicht, und hat es dann einfach gemacht.

    Meine Projekte                       :dau2:                            Avatar

  • 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
    1. cmd = "ifconfig eth0 | grep -i rx-bytes" 
    2. NW = subprocess.check_output(cmd, shell = True )


    Und hier wird er auf dem Display ausgegeben:

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

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


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

    Wie ist die Ausgabe von:

    Code
    1. ifconfig

    ?

    Denn:

    Code
    1. :~$ ifconfig eth0 | grep -i rx-bytes; echo $?
    2. eth0: Fehler beim Auslesen der Schnittstelleninformation: Gerät nicht gefunden
    3. 1
    Code
    1. :~$ ifconfig wlan0 | grep -i rx-bytes; echo $?
    2. RX-Bytes:88097278 (88.0 MB) TX-Bytes:13897665 (13.8 MB)
    3. 0
  • 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
    1. def get_cpu_usage():
    2. cpu_usage = psutil.cpu_percent(interval=None)
    3. 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
    1. def get_cpu_temp():
    2. with open("/sys/class/thermal/thermal_zone0/temp", 'r') as f:
    3. content = f.read().splitlines()
    4. 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
    1. ifconfig | awk 'NR < 10 && /bytes/ { printf("%s %s bytes\n",$1,$5); }'