Kaynağa Gözat

Speedport Status Blog Post

Thomas Buck 9 yıl önce
ebeveyn
işleme
ecff169065

+ 70
- 0
input/blog/2015/2015_07_15_speedport_status_widget.md Dosyayı Görüntüle

@@ -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
+

BIN
static/img/widget1.png Dosyayı Görüntüle


BIN
static/img/widget2.png Dosyayı Görüntüle


BIN
static/img/widget2_small.png Dosyayı Görüntüle


Loading…
İptal
Kaydet