netzwerk traffic von wlan0 anzeigen

  • hallo
    ich habe folgendes script was mir den traffic auf eth0 anzeigt.
    problem ist nur ich kriege es nicht so hin das es mir den traffic von wlan0 anzeigt,
    kann mir da jemand weiterhelfen ?


    das script sieht wie folgt aus


    vielen dank schonmal im voraus


    TwoCry

  • Anbei das funktionierende Script, angepasst auf "wlan0".:thumbs1:
    Zusätzlich zum Interface müssen in dieser Version auch die substring's angepasst werden (hier: line[:5] und line[6:]).
    Grund ist einfach die unterschiedliche Länge von "eth0" (4 Zeichen) und "wlan0" (5 Zeichen).


    Linux - Für das Leben nach dem Absturz!

    Edited once, last by Nightskill ().


  • ... den traffic auf eth0 anzeigt.


    Kleine Anmerkung am Rande: Wenn ich meinen Pi direkt ins KabelNetz meines Providers hänge, dann zeigt der RX-Zähler des eth0-Interfaces, im Monat ca. 6,5 GB zusätzlichen Traffic an. Dieser zusätzliche Traffic ist broadcast Traffic, verursacht durch arp requests und DHCP-ACK-Messages (d. h. m. E., eine fehlerhafte Konfiguration des Netzwerks durch den Kabel-Provider).
    Ich kann das eth0-Interface des Pi nicht so konfigurieren, dass dieser broadcast Traffic ignoriert wird. Auch wenn ich diesen Traffic mit arptables/iptables blocke, wird dieser vom RX-Zähler trotzdem erfasst.

    The most popular websites without IPv6 in Germany.

  • Das Script (Beitrag#1 & #2) zeigt nicht den absoluten Traffic an sondern nur die derzeitige Bandbreite.


    Beispiel auf meinem RPi @ EDIS.at ->

    mitten drin hab ich "apt-get update" ausgeführt, erst dann zeigt es etwas an, danach aber nicht mehr.


    Desweiteren sorgt der "time.sleep(1)" dafür dass das Script nach jeder Ausgabe für eine Sekunde blockiert (quasi pausiert) wird und in der Zeit nichts anzeigt, es gehen also Daten verloren.


    Von daher wäre dieser Weg eventuell nicht der richtige.


    Alternativ kann man das sehr mächtige Module psutil verwenden, damit lässt sich sehr einfach der gesamte Traffic anzeigen:


    Code
    apt-get install pip
    pip install psutil


    [code=php]#!/usr/bin/python


    from __future__ import print_function
    import psutil


    network_devices = psutil.network_io_counters(pernic=True)


    for device in network_devices:
    received = round( (float(network_devices[device].bytes_recv) / 1024.0) / 1024, 2)
    send = round( (float(network_devices[device].bytes_sent) / 1024.0) / 1024, 2)
    print("{0:5} -> received: {1:10}MB send: {2:10}MB".format(device, received, send))
    [/php]


    Man könnte auch mithilfe des curses Module's auch immer nur eine Stelle aktualisieren lassen, ohne für jeden Messwert eine Neue Zeile auszugeben und somit müsste man nicht rum scrollen...
    Das könnte wie folgt aussehen:
    [code=php]
    #!/usr/bin/python
    # by meigrafd
    # http://www.forum-raspberrypi.d…igen?pid=153960#pid153960
    #


    from __future__ import print_function
    import time, psutil, curses


    try:
    running=True
    stdscr = curses.initscr() #init curses and create window object stdscr
    while running:
    c=1
    network_devices = psutil.network_io_counters(pernic=True)
    for device in network_devices:
    received = round( (float(network_devices[device].bytes_recv) / 1024.0) / 1024, 2)
    send = round( (float(network_devices[device].bytes_sent) / 1024.0) / 1024, 2)
    stdscr.addstr(c, 5, "{0:5} -> received: {1:10} MB send: {2:10} MB".format(device, received, send))
    stdscr.move(0,0) #move cursor to (new_y, new_x)
    stdscr.refresh() #update the display immediately
    c+=1
    time.sleep(0.1)


    except KeyboardInterrupt:
    stdscr.addstr(0, 0, "..Quitting..")
    stdscr.refresh()
    except Exception, e:
    print("\nError: " + str(e))


    curses.endwin()
    running=False
    [/php]

  • Kleine Anmerkung am Rande: Wenn ich meinen Pi direkt ins KabelNetz meines Providers hänge, dann zeigt der RX-Zähler des eth0-Interfaces, im Monat ca. 6,5 GB zusätzlichen Traffic an. Dieser zusätzliche Traffic ist broadcast Traffic, verursacht durch arp requests und DHCP-ACK-Messages (d. h. m. E., eine fehlerhafte Konfiguration des Netzwerks durch den Kabel-Provider).
    Ich kann das eth0-Interface des Pi nicht so konfigurieren, dass dieser broadcast Traffic ignoriert wird. Auch wenn ich diesen Traffic mit arptables/iptables blocke, wird dieser vom RX-Zähler trotzdem erfasst.


    Ich verstehe nicht so ganz, wieso ARP Requests und DHCP ACKs, welche ja durch das eth0 Interface u.a. gehen, auf eine fehlerhafte Konfiguration des Netzwerks durch den Kabel-Provider deuten.
    DHCP ACKs (und OFFERs und DISCOVERs) werden immer durch das ganze Netz gebrüllt, selbst wenn man selbst kein DCHP Client aktiv hat. Es reicht also schon, wenn *irgendwo* ein DHCP Client aktiv ist und vom Router ne IP haben will und du bekommst diese Meldungen.
    Auch ARP Requests (und Response) werden ins ganze Netz gebrüllt, auch von dir/deinem PI, da dein lokaler ARP Cache regelmäßig ungültig wird und neu angefragt werden muss. Ohne ARP könntest du nicht von ISO OSI Schicht 3 nach 2 kommen und deswegen nicht mal ein einfachen Ping absetzen...
    Das sind also beides Protokolle, welche in deinem lokalen LAN aktiv sind.


    meigrafd: Das Skript sieht sehr interessant aus, allerdings gibst du als Einheit MiB an und nicht MB, da durch 1024 als Umrechnungsfaktor benutzt

    Edited once, last by mezen ().


  • Ich verstehe nicht so ganz, wieso ARP Requests und DHCP ACKs, welche ja durch das eth0 Interface u.a. gehen, auf eine fehlerhafte Konfiguration des Netzwerks durch den Kabel-Provider deuten.
    ...
    Das sind also beides Protokolle, welche in deinem lokalen LAN aktiv sind.



    DHCP ACKs (und OFFERs und DISCOVERs) werden immer durch das ganze Netz gebrüllt, ...


    Jaja, nur, dass es nicht um mein lokales LAN geht. Der Pi hat als WAN-IP (d. h. direkt im Internet, ohne Router) eine öffentliche IPv4-Adresse (am eth0) und dort sehe ich die arp requests von diversen Gateways des Kabel-Providers, die lt. geoiplookup sich z. B. in Freiburg, Mannheim, Ulm, Kornwestheim, ..., etc. befinden. Die DHCP-ACK-Messages kommen von einem Server mit der IP-Adresse 10.217.252.1.


    Z. B. in 2 Tage:

    Code
    ~ $ sudo arptables -nvx -L
    Chain INPUT (policy ACCEPT 164K packets, 4589K bytes)
    -j DROP -i eth0 -o * ! -s 46.###.###.# , pcnt=7512K -- bcnt=210M


    Code
    ~ $ sudo iptables -nvx -L PREROUTING -t raw
    Chain PREROUTING (policy ACCEPT 16615 packets, 1718388 bytes)
    pkts bytes target prot opt in out source destination
    414358 147522512 DROP udp -- eth0 * !46.###.###.# 0.0.0.0/0 udp spt:67


    Das war nicht immer so. Der Pi ist seit Oktober 2013 direkt im Internet, dieser intensive broadcast Traffic, wird erst seit ca. 2 Wochen so beobachtet.

    The most popular websites without IPv6 in Germany.

    Edited once, last by rpi444 ().