PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Internetbandbreite Protokolieren



Meister_Knobi
01.06.14, 23:30
Hallo alle zusammen,

ich würde gerne meine Internetbandbreite regelmäsig (vll im 15 Abständen) protokolieren. Meine Idee wäre es mit wget von einem Testserver eine Datei zu laden, die Ausgabe aufzubereiten und dann einzeilig mit datum und Uhrzeit in eine Datei zu schreiben.

Nur leider scheitert es schon ein der aufbereitung der Ausgabe, ich weiß nicht wie ich die richtigen werte mit grep oder ähnlichem filtern soll. zudem schaffe ich es nicht die ausgabe von wget mit ">" oder ">>" in eine datei zu schicken. Die Intervalle in denen des Skript ausgeführt werden sollte hatte ich vor als Corntab anzulgen.

Ich bin mit meinem ISP ein wenig am kämpfen da bei mir die Bandbreite ziemlich stark schwankt und hätte gerne etwas Dukumentiertes um denen mal druck zu machen.

Laufen sollte es auf einem Raspberry mit Raspbian. Hat da vll jemand schon etwas in der richtung oder kann mir damit weiter helfen?

Danke im Vorraus.

Efraim
02.06.14, 08:10
Die Statusmeldungen von wget gehen über den Fehlerkanal. Die musst Du also mit 2> oder 2>> umleiten.

Du kannst ja mal so einen Text erzeugen, hier posten und markieren, was Du ausfiltern willst, dann wird auch Hilfe dazu kommen.


Edit:
Unter Umständen reicht Dir schon die vorletzte Zeile:

wget "http://www.linuxforen.de/forums/showthread.php?t=276948" -O /dev/null 2>&1 | tail -2 | head -1

Meister_Knobi
02.06.14, 22:51
Die "2>&1" musst du mir noch mal erklären. tail und head dienen nehm ich an zum beschneiden der mehrzeiligen ausgabe?

Lediglich gespeichert haben möchte ich den dicken roten unterstrichenen Teil hier (ich bin zu blöd zum farbig hinterlegen :confused:):


pi@pi ~ $ wget -O /dev/null www.speedtest.qsc.de/100MB.qsc
--2014-06-02 23:26:05-- http://www.speedtest.qsc.de/100MB.qsc
Auflösen des Hostnamen »www.speedtest.qsc.de (www.speedtest.qsc.de)«... 195.90.7.115
Verbindungsaufbau zu www.speedtest.qsc.de (www.speedtest.qsc.de)|195.90.7.115|:80... verbunden.
HTTP-Anforderung gesendet, warte auf Antwort... 200 OK
Länge: 104857600 (100M)
In »»/dev/null«« speichern.

100%[================================================== ===============>] 104.857.600 10,8M/s in 11s

2014-06-02 23:26:16 (9,16 MB/s) - »»/dev/null«« gespeichert [104857600/104857600]

pi@pi ~ $Das wäre zu mindest das wichtigste. Wenn du jetzt noch auf der Pfanne hast ob das Skript vorher guckt ob sich noch andere Hosts im netzwerk befinden (vom Router ausgenommen) und das dann eventuell deren anzahl mit in die Datei schreibt oder den Testdownload dann garnicht ausführt wäre Bombe.

Ich hab da nur nen Code schnipsel gefunden das jede Adresse mit einer Schleife aus dem C-Netz durchtestet.

for ip in $(seq 1 254); do ping -c 1 192.168.178.$ip>/dev/null; [ $? -eq 0 ] && echo "192.168.178.$ip UP" || : ; doneDas dauert sehr lange ehe er dann dazu kommt einen DL auszuführen. An einen Broadcast-Ping hab ich auch schon gedacht nur der Router würde in jedem Fall auf diesen Antworten.

Efraim
03.06.14, 10:16
2>&1 legt Fehler- und Standardkanal (stderr und stdout) zusammen, so dass die Statusmeldungen von wget, über die Pipe gefiltert werden können. Tail und head ersetze ich nun gegen sed (ist bequemer und schneller als ein Rattenschwanz von verschiedenen Textfiltern):

wget "www.speedtest.qsc.de/100MB.qsc" -O /dev/null 2>&1 | sed -e '$!{h;d;}' -e x -e 's/).*$/)/'Die Ausgabe kannst Du nun einfach mit >>Datei.txt in einen Text umleiten.




Wenn du jetzt noch auf der Pfanne hast ob das Skript vorher guckt ob sich noch andere Hosts im netzwerk befinden (vom Router ausgenommen) ...Da muss ich passen.

Kip
03.06.14, 16:10
Wenn du jetzt noch auf der Pfanne hast ob das Skript vorher guckt ob sich noch andere Hosts im netzwerk befinden (vom Router ausgenommen) und das dann eventuell deren anzahl mit in die Datei schreibt oder den Testdownload dann garnicht ausführt wäre Bombe.



nmap -sP 192.168.178.0/24

Meister_Knobi
04.06.14, 20:32
wget "www.speedtest.qsc.de/100MB.qsc" -O /dev/null 2>&1 | sed -e '$!{h;d;}' -e x -e 's/).*$/)/'

die Funktion des mit -e angehängten skrips erschließt sich mir jetzt nicht auf die schnelle, es tut aber das was es soll danke.



nmap -sP 192.168.178.0/24

damit gehts wesentlich schneller danke. Jetzt muss ich das beides nur noch miteinander verbinden. Muss ich mal zeit für finden, ich peile mal Sonntag an. Danke für eure hilfe.

Edit:
Solange es noch Sonntag ist.^^

Iwie trete ich auf der Stelle. aus dem nmap echo bekomm ich kein boolwert den ich mit if verwerten kann. hab mich an andern Funktionen versucht die aber auch nicht so recht funktionieren wollen. melde mich wenn ich weiter gekommen bin.