[Info] Fritzbox TrafficMonitor für Linux

dede67

Neuer User
Mitglied seit
7 Nov 2010
Beiträge
18
Punkte für Reaktionen
1
Punkte
1
Moin,
da ich für Linux nix gefunden habe, was mir den TrafficMonitor des "Fritz!DSL Startcenters" ersetzt, habe ich mir ein entsprechendes Python-Programm gebaut, das dieses Problem löst.
Natürlich habe ich vorher Goggle nach so einem Tool befragt. Das passende habe ich leider nicht gefunden. Nur reichlich Fragen nach sowas.
Daher möchte ich mein Programm jetzt gerne zur Nutzung anbieten.
Es war mein erstes Programm in Python, ist dementsprechend sicher nicht optimal, aber es tut genau das, was ich haben will.
Anbei ein Screenshot und das Script (bei dem natürlich das .txt aus dem Namen entfernt werden sollte).
Es funktioniert mit einer Fritzbox 7270 ohne Modifikationen und braucht kein Passwort. Lediglich "Statusinformationen über UPnP übertragen" muss aktiviert sein (was ja aber Default ist).
Python sollte auf jedem Linux-System verfügbar sein, ggf. müssen noch zwei kleine Pakete für tkinter und soappy installiert werden (beide sind nur etwa 200KB groß).

Über sinnvolle Anmerkungen oder konstruktive Kritik würde ich mich freuen.
Speziell würde mich interessieren, ob es bei höheren Bandbreiten die Anzeige richtig skaliert (ich habe hier nur 1275 / 222 kbit/s).

Detlev
 

Anhänge

  • Like
Reaktionen: zelo

voipd

IPPF-Promi
Mitglied seit
5 Mai 2005
Beiträge
3,183
Punkte für Reaktionen
1
Punkte
38
Hallo,

eine tolle Anwendung. Hier ein bisschen "Stuff" zum weitermachen. :)

Bitte eine Variable fuer die Fritzbox einbauen, da man sie sonst immer an 4 Stellen aendern muss.

Die Box hat eine "6010 kbit/s" Empfangs und eine "979 kbit/s" Sendeleitung. Die Box macht gerade einen 100% Upload mit ca. 85 kBytes/sec.
Die Grafische Anzeige sagt: "Blau 652" und "Rot 106"
Rechne im Script bitte nochmals nach. :)

Danke!!

Code:
#:~/test$ ./bwm.py 
Empfang: 352602 KB/Sek      Senden: 51999 KB/Sek
Empfang: 42 KB/Sek      Senden: 316 KB/Sek
Empfang: 26 KB/Sek      Senden: 176 KB/Sek
Empfang: 44 KB/Sek      Senden: 211 KB/Sek
Empfang: 27 KB/Sek      Senden: 200 KB/Sek
Empfang: 12 KB/Sek      Senden: 171 KB/Sek
Empfang: 42 KB/Sek      Senden: 212 KB/Sek
[...]
Empfang: 31 KB/Sek      Senden: 216 KB/Sek
Empfang: 41 KB/Sek      Senden: 289 KB/Sek
Empfang: 24 KB/Sek      Senden: 183 KB/Sek
Empfang: 45 KB/Sek      Senden: 224 KB/Sek
Empfang: 18 KB/Sek      Senden: 144 KB/Sek
Empfang: 30 KB/Sek      Senden: 319 KB/Sek
^CTraceback (most recent call last):
  File "./bwm.py", line 123, in <module>
    root.mainloop()
  File "/usr/lib/python2.6/lib-tk/Tkinter.py", line 1020, in mainloop
    self.tk.mainloop(n)
  File "/usr/lib/python2.6/lib-tk/Tkinter.py", line 1408, in __call__
    def __call__(self, *args):
KeyboardInterrupt
 
Zuletzt bearbeitet:

dede67

Neuer User
Mitglied seit
7 Nov 2010
Beiträge
18
Punkte für Reaktionen
1
Punkte
1
Moin voipd,
vielen Dank für die Anmerkungen. Die IP der Fritzbox ist jetzt eine Variable. Außerdem habe ich noch einen "Splitmode" eingebaut, bei dem die beiden Kurven untereinander dargestellt werden bzw. sich nicht mehr überlagern.

Die bei dir extrem zu hoch angezeigten Sende-Raten kann ich nicht ganz deuten.
Auch meine Fritzbox liefert bei "Volllast" gelegentlich Werte, die den Faktor Zwei über die mögliche Bandbreite hinaus gehen.
Im Mittel passt das aber trotzdem zu den im Web-GUI unter "Online-Monitor" angezeigten Kurven.
Die Ausgabe via print aufs Terminal war eigentlich nur für Debug-Zwecke und zeigte jeweils den Wert der letzten Sekunde.
In der neuen Version verwendet auch der "print" den Mittelwert von vorletzter und letzter Sekunde.

An meiner Rechnung gibt es eigentlich nix zu ändern: ich hole pro Sekunde den Wert der bisher übertragenen Bytes, subtrahiere von w[t] den Wert von w[t-1] und erhalte somit die in der vergangenen Sekunde übertragenen Bytes.

Was zeigt denn bei dir die grafische Anzeige an...ist die auch viel zu hoch?

Detlev
 

Anhänge

Ohrenschmalz

Aktives Mitglied
Mitglied seit
19 Apr 2006
Beiträge
801
Punkte für Reaktionen
27
Punkte
28
hmmm, soappy und python-tk sind installiert, aber bei Aufruf passiert...nix...Cursor im Terminal, keinerlei Ausgabe...help needed...

Wie kriegt man hinterher die Grafik hin? *kratz*

Danke!

Edit: Nach Feierabend hier keine Fragen stellen! Man muß natürlich die IP anpassen. Ich ziehe alle dummen Fragen zurück ;)

Danke, weitermachen ;)
 
Zuletzt bearbeitet:

Ultim8

Neuer User
Mitglied seit
17 Jul 2011
Beiträge
2
Punkte für Reaktionen
0
Punkte
1
Vielen Dank Detlev!
Bin auf Kubuntu umgestiegen und brauchte für Conky einen Skript, hab dann deinen hier gefunden. Da ich von Python null Ahnung besaß und nur vor zehn Jahren paar Grundlagen C++ gelernt habe, war die Anpassung ne wirklich üble Angelegenheit ;)
Aber nach einer Woche und paar grauen Haaren mehr, präsentiere ich stolz die V2!
 

Anhänge

Zuletzt bearbeitet:

dede67

Neuer User
Mitglied seit
7 Nov 2010
Beiträge
18
Punkte für Reaktionen
1
Punkte
1
Hallo Ultim8,
ich habe mittlerweile auch schon eine V2 gebaut, die das SOAPPY nicht mehr braucht und wxwidgets statt tkinter als GUI verwendet.
Weiterhin wird auch eth0 gemessen und erreichbare dLAN-Adapter werden angezeigt.
Du solltest dir mal meine Fritzbox-Klasse ansehen.
Die verwendet jetzt statt "GetTotalBytesReceived" das m.E. besser geeignete "NewByteReceiveRate".

Anbei das Script und zwei Screenshots:
Anhang anzeigen bwm2.py.txtFritzbox Bandbreitenmonitor v2 - 2.pngFritzbox Bandbreitenmonitor v2 - 1.png


Wenn Python und wxWidgets installiert sind, müssen nur drei Parameter im Script angepasst werden.
Und zwar: FRITZBOX_IP, FRITZBOX_PORT und ALARM_FILE
Danach sollte es auf einem Linux-System (bei dem es ein eth0 gibt) lauffähig sein. Alles weitere ist per Einstellungs-Dialog änderbar.
Soll auch die dLAN-Adapter-Überwachung genutzt werden, wären noch die MAC-Adressen entsprechend der eigenen Adapter anzupassen.
Es können nur vier Adapter verarbeitet werden - weil die Anzeige für meine vier Adapter optimiert ist.
Wo das Tool "dlanlist" zu finden ist, steht im Script.
 

Ultim8

Neuer User
Mitglied seit
17 Jul 2011
Beiträge
2
Punkte für Reaktionen
0
Punkte
1
Das sieht mal richtig gut und vor allem ausgereift aus! Du hast ein gutes Stück vom Windows-Linux-Migrations-Problem gelöst. Ich hab wie blöd nach einem Fritz Monitor gesucht :)

Auf GetAddonInfos/GetTotalBytesReceived bin ich auch zufällig gestoßen. Weißt du vielleicht ob die ganzen Anfragen der UPnP-Norm entsprechen? Habe diesbezüglich widersprüchliches gelesen.

Habe das Skript jetzt für Conky gekürzt und das GUI herausgenommen.
Was du daraus vielleicht gebrauchen könntest ist die Uptime, zwecks möglicher 24h Zwangstrennung.
Am liebsten hätte ich deine Version als KDE Plasma Widget, oder Plasmoid heißen die glaub ich.

Falls jemand das Skript mit Conky nutzten möchte:
- upnp_traffic.py.txt in upnp_traffic.py
- die Dateiberechtigung auf Ausführbar stellen (suche: "linux datei ausführbar machen")
- im home-Verzeichnis den Ordner ".conky" erstellen und die Datei hinein kopieren
- in der upnp_traffic.py stehen alle Anweisungen wie die Zeilen, die in die Conky-Konfigurationdatei (Standard: .concyrc) gehören
 

Anhänge

Sandra-T

IPPF-Promi
Mitglied seit
7 Nov 2007
Beiträge
3,266
Punkte für Reaktionen
0
Punkte
0
Gäbe es evtl. eine Möglichkeit, die von diesem Tool gesammelten/gemessenen Daten in vnstat zu übernehmen ?

Gruß
Sandra
 

dede67

Neuer User
Mitglied seit
7 Nov 2010
Beiträge
18
Punkte für Reaktionen
1
Punkte
1
Hallo Ultim8,
in wie weit sich AVM an die Standards hält, entzieht sich meiner Kenntnis....und ist mir auch relativ egal.
Meine Infos habe ich aus ein paar "AVM Technical Notes".
http://www.avm.de/de/News/artikel/schnittstellen_und_entwicklungen.php
Und aus der Fritzbox selbst:
http://fritz.box:49000/igddesc.xml
http://fritz.box:49000/igddslSCPD.xml
http://fritz.box:49000/igdconnSCPD.xml
http://fritz.box:49000/igdicfgSCPD.xml

Hallo Sandra,
sicher lassen sich die Daten irgendwie an vnstat übergeben. Wie will das die denn haben?
Und was für Intervalle schweben dir vor?
Weil...unter http://humdi.net/vnstat/man/vnstat.html steht im Abschnitt "DESCRIPTION" der Satz "It keeps a log of hourly, daily and monthly network traffic for the selected interface(s)".
Mein Progrämmchen liest die Werte im Sekunden-Takt.
Obs das auch mit Stunden-Takt klarkommt, würde ich mal bezweifeln.

Ich habe das Ding dafür gebaut, um mein kleines Mini-Netz aktuell im Blick zu behalten bzw. zu sehen, ob gerade irgendwelche Rechner von meiner Frau oder meinen Blärgen eingeschaltet sind und der Grund für "unerklärlichen" Traffic auf meiner kümmerlichen 1.2MBit-Leitung sein können.

Anbei nochmal die neuste Version:
 

Anhänge

crnetde

Neuer User
Mitglied seit
7 Nov 2012
Beiträge
3
Punkte für Reaktionen
0
Punkte
0
Ich habe das Ding dafür gebaut, um mein kleines Mini-Netz aktuell im Blick zu behalten bzw. zu sehen, ob gerade irgendwelche Rechner von meiner Frau oder meinen Blärgen eingeschaltet sind und der Grund für "unerklärlichen" Traffic auf meiner kümmerlichen 1.2MBit-Leitung sein können.
Hi dede67,

ich versteh das schon richtig, das Du damit den Traffic der einzelnen Clients im LAN abbilden kannst?

Alle anderen Traffic-tools , die ich so für die FB gefunden habe, zeigen nur den WAN-Traffic.

Deine Version 1 hab ich zum laufen bekommen, aber die 2. nicht, es bricht ab bei "import wx.media" - sowohl auf einem raspberry Pi als auch auf meinem Ubuntu.
Ich glaub ich hab (zumindest auf dem Ubuntu) inzwischen in meiner verzweiflung alle python module installiert, die es überhaupt gibt :(

Habt ihr Euch mal mrtg für die FB angesehen?

Mein Traumtool wär ja RRD oder mrtg -mässige Auswertung über längere Zeiträume, das ganze auf dem Pi automatisch startend.
Aber wie gesagt, den LAN-Traffic nach Clients "sortiert".


Krille
 

dede67

Neuer User
Mitglied seit
7 Nov 2010
Beiträge
18
Punkte für Reaktionen
1
Punkte
1
Hi Krille,
mein Tool zeigt nur den WAN-Traffic und den eth0-Traffic des Systems, auf dem es selbst läuft.
Die anderen (entfernten) Rechner werden angepingt - und somit wird dafür lediglich angezeigt, ob sie überhaupt an sind.
Wenn ich deren Traffic sehen will, gehe ich dort per ssh rauf und sehe mir das mit iftop an.

Das "import wx.media" sollte eigentlich im "python-wxWidgets" mit drin sein.
Es wird (wenn ich mich recht entsinne) nur für das Abspielen des "Alarm-Sounds" gebraucht.....den man einschalten kann, um alarmiert zu werden, wenn der WAN-Traffic seit ein paar Sekunden nahe Null ist - also üblicherweise ein Download fertig ist.
Wenn du darauf verzichten kannst, kommentiere einfach die Zeilen 5 und 462 bis 467 aus.

Also die hier (falls meine Version mittlerweise andere Zeilennummern haben sollte):
5
#import wx.media

462...
# try:
# self.mc = wx.media.MediaCtrl(self)
# except NotImplementedError:
# self.Destroy()
# raise
# self.mc.Load(ALARM_FILE)


BTW: In meiner VM mit Ubuntu 12.04 64Bit läuft es. Leider weiss ich nicht mehr, ob ich dafür irgendwas nachinstallieren musste.
Drin sind "python-wxgtk2.8" und "python-wxversion" und "libwxbase2.8-0" und "wx-common" und "wx2.8-headers".
 

crnetde

Neuer User
Mitglied seit
7 Nov 2012
Beiträge
3
Punkte für Reaktionen
0
Punkte
0
Danke - hat nicht geklappt - ist aber nun auch hinfällig, denn ich hab da was gebastelt.

Es ist mir gelungen einen Linux-Rechner so zu konfigurieren, das dieser der FB den Traffic quasi klaut.

Das Prinzip: 2 IP-Netze auf der Nic (eth0 und eth0:1), den ganzen Traffic da durchschieben und mit Bandwidthd auswerten. :cool:

Das ist eine Kombination aus iptables und dnsmasq - das ganze läuft jetzt bei mir seit ner Stunde und ich bin durch die ganze Bude geflitzt und hab alle Familienmitglieder genervt mit speedtests und Updates - und es läuft.
:D
Damit die IP-Vergabe im LAN läuft hab ich im dnsmasq den DHCP angeschaltet und auf der Fritzbox aus - das klappt sogar mit WLAN-Clients! :)
Damit Geräte, die statische IPs haben (also bei uns noch derzeit Server und Drucker und die NAS) dennoch mit den Clients im "neuen" Netz kommunizieren können, ist auf der FB eine Route einzutragen für das Subnetz.

Der Knaller: ich hab das jetzt auf dem Raspberry Pi gemacht, den kann ich jetzt mit einem kurzen LAN-Kabel an die FB hängen und über die FB mit Strom versorgen und fertig.

Bildschirmfoto 2012-11-13 um 22.43.08.jpg

Statt Bandwidthd kann man jetzt natürlich auch vnstat oder andere RRD-Tools zur Auswertung nehmen, und es läuft auf jeder Fritzbox - auch gefreezeden (die das Problem aber im Prinzip eh nicht haben).

Ich bin grad total aus dem Häuschen vor Freude, weil es so minimalistisch ist.

Komplettes Howto schreib ich gleich, bin mir nur noch nicht so ganz sicher wohin, aber verlinken werd ich es dann hier auch.

Krille

Edit: Ich hab es gemacht, bevor ich vergesse wie es geht - jetzt schlaf ich aber gleich beim tippen ein.
Traffic Monitor für LAN- und WLAN-Clients für die Fritz.box

Ist zwar jetzt irgendwie krass off-topic, aber wenn man sowas sucht, landet man immer hier :)
 
Zuletzt bearbeitet:

kunert0345

Neuer User
Mitglied seit
6 Mai 2008
Beiträge
22
Punkte für Reaktionen
0
Punkte
0

dede67

Neuer User
Mitglied seit
7 Nov 2010
Beiträge
18
Punkte für Reaktionen
1
Punkte
1
Moin kunert0345,
freut mich, dass dir mein Progrämmchen gefällt.
Was du [wahrscheinlich] willst, geht recht einfach.....

Die Idee ist, dass sich der Bandbreitenmonitor
a) nicht in der Taskleiste blicken lässt und man ihn dann
b) mittels wmctrl bei Bedarf in den Vordergrund bringt.

Anbei erstmal die aktuelle Version meines Programmes.

Wenn du Zeile 1084 änderst von
Code:
    wx.Frame.__init__(self, None, wx.ID_ANY, "Bandbreitenmonitor v2.0", pos=pos, size=size)
nach
Code:
    wx.Frame.__init__(self, None, wx.ID_ANY, "Bandbreitenmonitor v2.0", pos=pos, size=size, style=wx.DEFAULT_FRAME_STYLE|wx.FRAME_NO_TASKBAR)
erscheint das Programm nicht mehr in der Taskleiste.

Nun besorgst du dir noch das Tool wmctrl (wmctrl-1.07-144.1.1.x86_64) und fügst dann deinem Panel einen neuen Starter hinzu, der folgenden Befehl ausführt:
Code:
wmctrl -a Bandbreitenmonitor
Und wenn dann alles richtig funktioniert, langt ein Klick auf den Starter, um den [natürlich geöffneten] Bandbreitenmonitor in den Vordergrund zu bringen.
Ich habs mit openSUSE 12.3 und XFCE getestet.
 

Anhänge

kunert0345

Neuer User
Mitglied seit
6 Mai 2008
Beiträge
22
Punkte für Reaktionen
0
Punkte
0
Danke Danke Danke ...hab ich schon Danke gesagt :)))
Jetzt freu ich mich jedes mal wenn ich den Rechner hoch fahre und ich ein genau so Tolles Tool wie zu meinen windows Zeiten habe (von AVM der Monitor).
 

andreaslink

Neuer User
Mitglied seit
7 Nov 2010
Beiträge
1
Punkte für Reaktionen
0
Punkte
0
Moin dede67,

ich kann auch nur sagen: Vielen Dank!! Das ist genau so ein Tool, wie ich gesucht habe, habe es auch unter Ubuntu 13.04 zum laufen bekommen, man musste lediglich die python-wxtools nachinstallieren und das war mit "sudo apt-get install python-wxtools" schnell getan. Damit lief das Script sofort. Super wäre noch, wenn man die "Opacity", also die Transparenz des Fensters einstellen könnte, da ich den Monitor gern immer parallel aktiv und im Vordergrund habe und er dann nicht die volle Sicht raubte :). Aber ich kenne mich mit Python zu schlecht aus, als dass ich das nachbauen/erweitern könnte :-/. Vielleicht kann hier jemand sonst helfen, bevor ich mich eingearbeitet habe?

/Andreas
 

panik105

Neuer User
Mitglied seit
12 Feb 2013
Beiträge
1
Punkte für Reaktionen
0
Punkte
0
Hallo,

FritzBox 7390 lieferte seit Update auf FritzOS 6.20 keine Werte mehr -> Exception in bwm2.py.
Nach Änderung der Zeile 200 von
self.controlURL= "upnp/control/WANCommonIFC1"
in
self.controlURL= "igdupnp/control/WANCommonIFC1"
geht es hier wieder.

Tschues..
Michael
 

zippel

Neuer User
Mitglied seit
24 Okt 2005
Beiträge
20
Punkte für Reaktionen
0
Punkte
1
Gibt es das auch für den MAC?