Drum prüfe, wer sich ewig bindet!
Chello UPC rühmt sich mit schnellem Internet. Hyper-schnellem Internet. Leider bleibt das – zumindest in den Wiener Innenbezirken – meist eine Mähr’! Da nun aber gerade in diesen Breitengraden die Alternativen mangels “blizznet” et al. rar sind, bzw. LTE auf Grund der Bebauungsdichte auch keine besseren Ergebnisse liefert, ist man der miserablen Servicequalität des Quasi-Monopolisten auf Gedeih und Verderb ausgeliefert.
Oder?
Nein, ist man nicht. Denn eine garantierte Bandbreite muss nun mal eingehalten werden; wird sie das nicht, hat der Kunde laut VKI Gewährleistungsanspruch (siehe Artikel derstandard.at vom 25 Mai d.J.)
Das Silberschneider-Script am Mac in 4 Schritten
Der oben erwähnte Artikel liefert ein “Speed-Test” Skript mit, welches periodisch die Internet-Geschwindigkeit prüft. Idealerweise konfiguriert man Skript und cronjob auf einem dauerhaft laufenden Linux Server (dafür wurde es maßgeschneidert). Es geht aber – mit ein paar Adaptionen auch am Mac. Hier die Infos:
1. Download und Install
Den Dauerläufer speedtest_cron gibts auf GitLab! Er bedient sich eines speedtest-cli Skripts von “Sivel” (github download). Beides herunterladen und in einem eigenen neuen Ordner unter ~/Library ablegen (~ ist: user directory – z.B. /<main-hd>/Users/<mein-name>/). Die speedtest-cli Dateien kommen dabei in das vorbereitete Unterverzeichnis “speedtest_cli” (Anm.: speedtest-cli ist mit Apache-Lizenz freigegeben; speedtest_cron ist komplett frei verwendbar – ohne Gewähr).
2. Pfade anpassen
speedtest_cron ist per README Instruktionen perfekt für die Anpassung vorbereitet; das Einzige, was man im Prinzip tun muss, ist die Pfade auf die realen Gegebenheiten am eigenen Gerät anzupassen – im Skript sind das alle Stellen mit /path/to/this/folder
3. Network-Interface adaptieren
Die Netzwerkkarten werden unter Linux mit eth0..n nummeriert. Unter Mac OS X heißen sie en0..n! Da das cron-Skript versucht, die Quelle des Speed-Tests (Source IP Adresse) mit zu berücksichtigen, muss man diesen Teil adaptieren. Dazu die folgende Zeile in der Datei speedtest_cron ändern:
/<mein-pfad-zum-speedtest>/speedtest_cli/speedtest_cli.py --share --server 5351 --simple --source `/sbin/ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'` > /<mein-pfad-zum-speedtest>/speedtests/$DATE.log
Der wesentliche Teil beginnt bei “/sbin/ifconfig …“. ifconfig liefert – auch unter OS X – die Netzwerkkonfiguration aller Interfaces. eth0 existiert nicht, daher kommt es zu einem Fehler. Unter Verwendung von en0 gibts ein Ergebnis, das allerdings anders als unter Linux formatiert ist; daher läuft auch das nachfolgende rausschneiden der IP-Adresse anders. Der adaptierte Befehl sieht folgendermaßen aus:
/<mein-pfad-zum-speedtest>/speedtest_cli/speedtest_cli.py --share --server 5351 --simple --source `/sbin/ifconfig en0 | grep 'inet' | cut -d: -f2 | awk '{ print $2}'` > /<mein-pfad-zum-speedtest>/speedtests/$DATE.log
- ifconfig en0 liefert die Daten zur ersten Netzwerkkarte im Gerät (darf auch gerne eine andere sein, wenn über diese getestet werden soll)
- grep ‘inet’ liefert aus den gesamten Daten von ifconfig jenen Teil, in dem die IP-Adresse steht
- cut -d: -f2 schneidet alles vor einem Doppelpunkt weg und liefert nur noch das zweite Feld in der Zeile (könnte man unter OS X auch weglassen)
- awk ‘{ print $2}’ liefert das zweite Feld in der “inet” Zeile – die IP-Adresse
Und diese wird dann als Quelle dem speedtest Skript vorgeworfen.
4: Cron Job erstellen
Das ist am Mac zugegeben etwas lästig. crontab wird nicht empfohlen, stattdessen laufen unter OS X alle zeitgesteuerten Jobs mit launchd. Die Zeit-Parametrierung lässt aber keine Syntax “laufe alle 10 Minuten zwischen X und Y Uhr” zu. Das muss leider mittels mehrerer identer Parameterzeilen angegeben werden:
<dict><key>Hour</key><integer>8</integer><key>Minute</key><integer>30</integer></dict>
Die Zeile oben sagt im Prinzip: Starte den Job um 8:30; und eine derartige Zeile kommt nun so oft mit so vielen Uhrzeiten in die launchd-Konfigurationsdatei, wie man Abläufe von speedtest_cron haben will. Etwas mühsam, aber gut … wem das zu nervig ist, einfach das LaunchControl UI verwenden (hier zum Download).
Also – launchd Einrichtung step-by-step:
- …plist-Datei beliebigen Namens erstellen
- Ablegen im Verzeichnis ~/Library/LaunchAgents (hier liegen unter OS X alle benutzerdefinierten launchd Job-Konfigurationen)
- Label (beliebig): <key>Label</key><string>local.speedtest</string>
- Auszuführendes Programm: <key>Program</key><string>/<mein-pfad-zum-speedtest>/speedtest_cron</string>
- Startzeitpunkte festlegen mit dem Schlüssel <key>StartCalendarInterval</key>
- Oben erwähnte Zeile mehrfach einfügen je nach Wunsch
Eine vollständige sehr gute launchd-Anleitung gibts hier: http://launchd.info/
4a: Start ohne Reboot
launchd Jobs starten beim booten oder beim Login; alternativ kann man mittels Kommando
launchctl load
den Job direkt manuell starten. Ab dann läuft der Speedtest gem. eingestellten Zeitparametern und legt jeweils eine Datei im Unterverzeichnis ~/Library/<mein-pfad-zum-speedtest>/speedtests ab.
Diese können allesamt auf Wunsch noch mit dem mitgelieferten Skript speedcsv in eine CSV-Datei überführt werden.
Und die kann man dann freudig UPC als Nachweis für deren schlechte Service-Qualität vorlegen, um zumindest etwas weniger zu zahlen – in der Hoffnung, dass besonders viele solcher Nachweise den Provider endlich dazu verführen, seine Leistungen im Wiener Innenstadtbereich nachhaltig zu verbessern.