|
@@ -0,0 +1,70 @@
|
|
1
|
+title: Blog
|
|
2
|
+post: Telekom Speedport Status Widget
|
|
3
|
+date: 2015-07-15
|
|
4
|
+comments: true
|
|
5
|
+flattr: true
|
|
6
|
+twitter: xythobuz
|
|
7
|
+---
|
|
8
|
+
|
|
9
|
+## {{ page["post"] }}
|
|
10
|
+<!--%
|
|
11
|
+from datetime import datetime
|
|
12
|
+date = datetime.strptime(page["date"], "%Y-%m-%d").strftime("%B %d, %Y")
|
|
13
|
+print "*Posted at %s.*" % date
|
|
14
|
+%-->
|
|
15
|
+
|
|
16
|
+Manche von uns haben das große Vergnügen, mit einem Speedport Router der Telekom gesegnet zu sein. So steht auch bei uns ein Speedport W723V Typ B.
|
|
17
|
+
|
|
18
|
+Zur Zeit habe ich kein großes Vergnügen mit meiner Internetanbindung, daher wäre es angehenm, die Ausgaben der Statusseite des Routers per [GeekTool](http://projects.tynsoe.org/en/geektool/) auf dem Desktop anzuzeigen.
|
|
19
|
+
|
|
20
|
+Leider ist die besagte Statusseite nicht nur einfaches HTML, sondern wird mittels Clientseitigem Javascript erzeugt. Groteskerweise setzt der Router je nach Status andere Werte für Variablen im Javascript Code.
|
|
21
|
+
|
|
22
|
+Glücklicherweise gibt es einen einfachen Weg diese Seite in einem Headless-Browser auszuführen um die Seite zu *rendern*, nämlich [PhantomJS](http://phantomjs.org). Es genügt ein einfaches `sudo port install phantomjs` zur Installation mittels MacPorts.
|
|
23
|
+
|
|
24
|
+Nun brauchen wir ein kleines Javascript um die Seite zu laden und auszuführen ([Quelle](http://superuser.com/a/448517)):
|
|
25
|
+
|
|
26
|
+ vim ~/bin/save_page.js
|
|
27
|
+
|
|
28
|
+ var system = require('system');
|
|
29
|
+ var page = require('webpage').create();
|
|
30
|
+ page.open(system.args[1], function() {
|
|
31
|
+ console.log(page.content);
|
|
32
|
+ phantom.exit();
|
|
33
|
+ });
|
|
34
|
+
|
|
35
|
+ :wq
|
|
36
|
+
|
|
37
|
+Zu guter letzt noch ein Shellscript, um das Javascript auszuführen und die Ausgabe zu formatieren. Hierzu werden zuerst die unwichtigen Stellen herausgeschnitten, alle HTML-Tags entfernt, leere Zeilen gelöscht und HTML Escape Sequenzen entfernt. Des weiteren werden Leerzeichen hinter Doppelpunkten eingefügt, die erste und zwei Zeilen in der Mitte gelöscht, aufeinanderfolgende Zeilen in Zweierblöcken aneinandergehängt und doppelte Leerzeichen sowie überflüssiger statischer Text entfernt.
|
|
38
|
+
|
|
39
|
+Zu guter letzt eine kleine Bash Funktion um die Ausgabe rechtsbündig auszurichten, da das Widget am rechten Rand meines Monitors platziert ist. Das ist natürlich optional.
|
|
40
|
+
|
|
41
|
+ vim ~/bin/status.sh
|
|
42
|
+
|
|
43
|
+ #!/bin/bash
|
|
44
|
+ right() {
|
|
45
|
+ l="$(cat -)";
|
|
46
|
+ s=$(echo -e "$l"| awk ' { if ( length > L ) { L=length} }END{ print L}');
|
|
47
|
+ echo "$l" | while read l;do j=$(((s-${#l})));echo "$(while ((j-->0)); do printf " ";done;)$l";
|
|
48
|
+ done;
|
|
49
|
+ };
|
|
50
|
+ /opt/local/bin/phantomjs /Users/thomas/bin/save_page.js http://speedport.ip/top_status.stm | sed -n '/Internetzugang/,$p' | head -n 34 | sed -E 's/<[^>]*>//g' | sed '/^$/d' | sed -E 's/&[^;]*;//g' | sed 's/:/& /' | tail -n +2 | sed -E '7,8d' | paste -d " " - - | tr -s " " | sed -E 's/Öffentliche WAN-//g' | right
|
|
51
|
+
|
|
52
|
+ :wq
|
|
53
|
+ chmod a+x ~/bin/status.sh
|
|
54
|
+
|
|
55
|
+Die Ausgabe sieht dann so aus:
|
|
56
|
+
|
|
57
|
+ DSL-Link: Synchron
|
|
58
|
+ Downstream: 51391 kBit/s
|
|
59
|
+ Upstream: 10048 kBit/s
|
|
60
|
+ IPv4: 87.162.241.165
|
|
61
|
+
|
|
62
|
+<div class="yoxview">
|
|
63
|
+ <a href="img/widget1.png" class="thumbnail">
|
|
64
|
+ <img src="img/widget1.png" alt="Screenshot" title="Screenshot 1">
|
|
65
|
+ </a>
|
|
66
|
+ <a href="img/widget2.png" class="thumbnail">
|
|
67
|
+ <img src="img/widget2_small.png" alt="Screenshot" title="Screenshot 2">
|
|
68
|
+ </a>
|
|
69
|
+</div>
|
|
70
|
+
|