[[Vorlage(Archiviert)]] {{{#!vorlage Warnung Die Verwendung dieses Howto geschieht auf eigene Gefahr. Bei Problemen mit der Anleitung melde dies bitte in der dazugehörigen Diskussion und wende dich zusätzlich an den Verfasser des Howtos. }}} {{{#!vorlage Hinweis Diese Howto-Anleitung wurde zuletzt von [user:Stepe:] am 29.01.2015 unter '''Ubuntu 14.10''' erfolgreich getestet. }}} = Problembeschreibung = Ziel ist es, die Statuswerte des Speedport W921v mit einem Skript auszulesen und je nach Bedarf weiter zu verarbeiten. Im folgenden Beispiel wird [:PHP:] in der Version 5.3.3-7 verwendet. Anmerkung: Das ursprüngliche Ziel, die Statuswerte direkt mit den eigenen Funktionen des Speedport auszulesen, konnte bisher mangels Zugriff auf die Quelldaten nicht realisiert werden. Die Lösung hier verwendet die Statuswerte, welche auf einer [https://speedport.ip/hidden/hidden_index.stm versteckten Statusseite] des Herstellers Arcadyan generiert werden. Allerdings kann auf die Seite nur nach erfolgter Benutzeranmeldung zugegriffen werden. Da der Speedport doppelten administrativen Zugriff verweigert, darf keine weitere Webseite des Speedports geöffnet sein. = Anleitung = Voraussetzungen: * Ein lokaler Webserver (zum Beispiel Apache) mit PHP Modul (das Skript wurde mit der PHP-Version 5.3.3-7 getestet) * Die PHP-Datei muss in einem Verzeichnis liegen, auf welches der Webserver zugreifen kann (z.B. "/var/www") * Damit PHP die Daten von der Statusseite auslesen kann, wird die cUrl-Erweiterung benötigt: {{{#!vorlage Befehl sudo apt-get install curl libcurl3 libcurl3-dev php5-curl sudo /etc/init.d/apache2 restart }}} Folgende Statusvariablen werden von der Statusseite ausgelesen: {{{#!code text "bWanConnected" - Verbindungsstatus (0/1) "var download_rate" - DSL Downstream (kbps) "var upload_rate" - DSL Upstream (kbps) "var max_download_rate" - maximaler Downstream (?) "var max_upload_rate" - maximaler Upstream (?) "var download_noise_margin" "var upload_noise_margin" "wan_ip" öffentliche IP-Adresse "wan_subnet_mask" "wan_gateway" "primary_dns" "secondary_dns" }}} Das Skript: {{{#!code html+php "; $_REFERER="https:///html/login/"; $_REFEREE="https:///data/Login.json"; $_USERAGENT="Mozilla/4.73 [en] (X11; U; Linux 2.2.15 i686)"; $cl = curl_init(); curl_setopt($cl, CURLOPT_RETURNTRANSFER, true); curl_setopt($cl, CURLOPT_COOKIESESSION, true); curl_setopt($cl, CURLOPT_COOKIEJAR, "/tmp/speedport.cookie"); curl_setopt($cl, CURLOPT_COOKIEFILE, "/tmp/speedport.cookie"); curl_setopt($cl, CURLOPT_USERAGENT, $_USERAGENT); curl_setopt($cl, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($cl, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($cl,CURLOPT_NOBODY,false); curl_setopt($cl, CURLOPT_REFERER, $_REFERER); curl_setopt($cl, CURLOPT_URL, $_REFEREE); curl_setopt($cl, CURLOPT_POST, true); curl_setopt($cl, CURLOPT_POSTFIELDS, "password=$_PASS&showpw=0"); curl_exec($cl); //echo "Info1: ".curl_getinfo($cl,CURLINFO_HTTP_CODE)."
"; //echo "Error1: ".curl_error($cl)."
"; curl_setopt($cl, CURLOPT_POST,false); $_REFERER=$_REFEREE; $_REFEREE="https:///hidden/status_main.stm"; curl_setopt($cl, CURLOPT_REFERER, $_REFERER); curl_setopt($cl, CURLOPT_URL, $_REFEREE); $_webpage = curl_exec($cl); //echo "Info2: ".curl_getinfo($cl,CURLINFO_HTTP_CODE)."
"; //echo "Error2: ".curl_error($cl)."
"; if($_webpage){ //Array mit den relevanten Variablenbezeichnungen $vars = array("bWanConnected","var download_rate","var upload_rate","var max_download_rate","var max_upload_rate","var download_noise_margin","var upload_noise_margin","wan_ip","wan_subnet_mask","wan_gateway","primary_dns","secondary_dns"); //Array mit Anzeigetexten $text = array("Verbindung: ","Down: ","Up: ","Max Down: ","Max up: ","Noise margin down: ","Noise margin up: ","WAN-IP: ","WAN-Subnetmaske: ","WAN-Gateway: ","Primary-DNS: ","Secondary-DNS: "); $rows = explode("\n", $_webpage); $val=""; $i=0; ?> Speedport Verbindungsstatus 0 & $i < 5) { echo $text[$i].$val." kbps
"; } else { if($i==0){ $val= $val=="1" ? "verbunden" : "getrennt"; } echo $text[$i].$val."
"; } } $i++; } ?> /data/Login.json"; curl_setopt($cl, CURLOPT_POSTFIELDS, "logout=byby"); curl_setopt($cl, CURLOPT_POST, true); curl_setopt($cl, CURLOPT_URL, $_REFEREE); curl_exec($cl); //echo "Info3: ".curl_getinfo($cl,CURLINFO_HTTP_CODE)."
"; //echo "Error3: ".curl_error($cl)."
"; curl_close($cl); ?> }}} = Links = * [topic:reconnect-script-fuer-speedport-w921v:Reconnect Script für Speedport W921v] - Forenbeitrag * [:Howto:] {Übersicht} Übersicht aller Howto-Artikel ## Nach der Fertigstellung des Howtos bitte die Aufnahme in die Howto-Sammlung über die Schaltfläche "Diskussion" mitteilen. Weitere [:Wiki/Tag:Tags] sind nicht gestattet! #tag: Howto