DSL - Status Fritzbox 7270 Script

Hallo,

ich suche ein Script mit dem ich den DSL Status meiner Fritzbox auslesen kann (siehe Anhang).
Da ich mittlerweile RAM geschaltet bekommen habe ist es mir jetzt möglich zu guten Zeiten eine 2Mbit Verbindung auszubauen (vorher nur DSL-light).
Mich würden vor allen die aktuellen Statusinformationen zur DSL-Leitung interessieren, mit welcher Geschwindigkeit usw. ich gerade verbunden bin.

Ich weiss, dass man diese Seiten irgendwie aus der Box auslesen kann.

Leider bin ich in PHP und Webprogrammierung etwas zu schlecht.

  • Anruferliste und Up- und Download Script habe ich schon in Betrieb --> funktioniert super

Vielleicht kann mir jemand mit einem kleinen Code-Schnipsel helfen.
Danke
Rene

Ich seh grad, dass ist schon ein bischen älter. Hier mal etwas neueres.
Eventuell musst Du die Zeilen anpassen.

<?
$fritzbox_ip = 'fritz.box';
$fritzgui    = 'http://fritz.box/cgi-bin/webcm';
$fritzseite  = '../html/de/menus/menu2.html';
$filename    = IPS_GetKernelDir()."\\webfront\\user\\Fritzbox\\DslDetails.txt";// anpassen
$password    = 'xxxx';

$ch = curl_init('http://' . $fritzbox_ip . '/cgi-bin/webcm?getpage=../html/login_sid.xml');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$login = curl_exec($ch);
curl_close($ch);
$session_status_simplexml = simplexml_load_string($login);


if ($session_status_simplexml->iswriteaccess == 1)
{
   $SID = $session_status_simplexml->SID;
}
else
{
   $challenge = $session_status_simplexml->Challenge;
   $response = $challenge . '-' . md5(mb_convert_encoding($challenge . '-' . $password, "UCS-2LE", "UTF-8"));
   $login = array('getpage' => $fritzseite, 'login:command/response' => $response);
   $sendlogin = http_post_fields($fritzgui, $login);
   preg_match('@<input type="hidden" name="sid" value="([A-Fa-f0-9]{16})" id="uiPostSid">@i', $sendlogin, $matches);
   if (isset($matches[1]) && $matches[1] != '0000000000000000')
   {
      $SID = $matches[1];
   }
   else
   {
      echo "Fehler: Login fehlgeschlagen";
      return;
    }
}

$dsl = array('getpage' => $fritzseite, 'sid' => $SID, 'var:menu' => 'internet', 'var:pagename' => 'adsl');
$getDslDetails = http_post_fields($fritzgui, $dsl);

$fileHandle = @fopen($filename, 'wb+');
fwrite($fileHandle, $getDslDetails);
fclose($fileHandle);

$lines = file("../webfront/user/Fritzbox/DslDetails.txt");
//print_r($lines);

for ($i = 2986; $i <= 3143; $i++)
{
    $ausgabe = $lines[$i];
    $ausgabe = str_replace('<table id="t1" class="tborder" width="600" style="margin: auto;">', '<table border="1" width="990px" style="margin: 15px; background-color:#FFFFC0; color:#000000;">', $ausgabe);
    $ausgabe = str_replace('<table id="t4" class="tborder" width="600" style="margin: auto;">', '<table border="1" width="990px" style="margin: 15px; background-color:#FFFFC0; color:#000000;">', $ausgabe);
    $ausgabe = str_replace('<td class="c3">', '<td style="text-align:right;">', $ausgabe);
    $ausgabe = str_replace('<td class="c2">', '<td style="text-align:right;">', $ausgabe);
   //$ausgabe = str_replace('<th class="c3">', '<th style="text-align:right;">', $ausgabe);
   //$ausgabe = str_replace('<th class="c1"></th>', '<th style="text-align:left; background-color:#C0C0C0;">Informationen</th>', $ausgabe);
   //$ausgabe = str_replace('<th class="c2"></th>', '<th style="background-color:#C0C0C0;">', $ausgabe);
    echo utf8_decode($ausgabe);
}

?>

Sieht dann so aus.

Danke für die schnelle Antwort.
Leider wirft das Script bei mir einige Fehlermeldungen aus.

Call to undefined function mb_convert_encoding() in [Fritzbox\DSL Status\Abfrage DSL Status] on line 22

Call to undefined function http_post_fields() in C:\IP-Symcon\scripts\30228.ips.php on line 24

Sind das nicht PHP-Standartfunktionen oder muss man da noch was einbinden?

René

Du musst die extension mit einbinden. Die Dateien findest Du im obigen Link im ersten Post angehängt für V2.2

Danke hat super geklappt.

Wer lesen kann ist klar im Vorteil, habe das mit den Extension nicht gleich mitbekommen.

Die Daten werden auch alle angezeigt. Ich erhalte aber noch als Pullup-Fenster folgende Fehlermeldung. (Anhang)

Stammt das aus IPS oder aus der Fritzbox?

Danke
René

Fehlermeldung.png

Das kannst Du ignorieren. Das tritt nur auf, wenn Du das Script von Hand ausführst. Das ganze rufst Du ja dann über Webfront auf.

Perfekt. :smiley:
Danke nochmal für die schnelle Hilfe.

René

$dsl = array(‚getpage‘ => $fritzseite, ‚sid‘ => $SID, ‚var:menu‘ => ‚internet‘, ‚var:pagename‘ => ‚adsl‘);
$getDslDetails = http_post_fields($fritzgui, $dsl);

Wenn ich das richtig interpretiere scheinen diese Zeilen zur Abfrage der Informationen die wichtigsten zu sein.

‚var:menu‘ => ‚internet‘ → Menüpunkt
‚var:pagename‘ => ‚adsl‘ → Seite

Woher weiss man das der „pagename“ z.B. adsl ist ?

Gibt’s eine Liste oder kann ich das irgendwo ablesen?
Ich frage deshalb, weil ich gern aus anderen Seiten noch Informationen abrufen möchte.

Danke
René

Hallo,

Ich habe keine Ahnung von dem ganzen IP-S hier, da ich es selbst nicht brauche,
aber du kannst auch mal versuchen die Datei hier: „adsldaten.xml“
unter dem Link „getpage=…/html/de/internet/adsldaten.xml“
zu Lesen und Auszuwerten, es müssten? alle Infos die du brauchst drin stehen?!

Ich kann dabei nicht helfen, Sorry :wink:

Gruß Erwin

„adsldaten.xml“ hier:

<?xml version = "1.0" ?>






<DSL mode="0" carrierState="0" >
<DATA>
<MaxDslamRate rx="0" tx="0" />
<MinDslamRate rx="0" tx="0" />
<CableCapacity rx="0" tx="0" />
<ActDataRate rx="0" tx="0" />
<Latenz>
<RX interleave="0" delay="0" />
<TX interleave="0" delay="0" />
</Latenz>
<Bitswap rx="0" tx="0" />


<SignalNoiseDistance rx="0" tx="0" />
<LineLoss rx="0" tx="0" />
<PowerCutBack rx="0" tx="0" />
</DATA>
<STATISTIC>
<DslGuiVersion DslGuiVer="0" />
<ES cpe="0" coe="0" />
<SES cpe="0" coe="0" />
<FEC_min cpe="0.00" coe="0.00" />
<CRC_min cpe="0.00" coe="0.00" />

<LossOfSignal cpe="0" coe="0" />
<LossOfFrames cpe="0" coe="0" />
<FEC cpe="0" coe="0" />
<CRC cpe="0" coe="0" />
<NoCellDelineation cpe="0" coe="0" />
<HeaderErrorCtrl cpe="0" coe="0" />
</STATISTIC>
</DSL>

ohne Daten, da die Box FB 7390 neu und noch nicht mit DSL verbunden wahr letzes Jahr 12/2010

Hallo Rene,

Woher weiss man das der „pagename“ z.B. adsl ist ?

Du musst dir den Quelltext der Seite ansehen von welcher Du Daten auslesen willst.

Hallo Rainer,

irgendwie stelle ich mich zu doof an.

Wenn ich die gewünschte Seite in meiner Fritzbox öffne und dann im Firefox mit der rechte Maustaste auf Quelltext gehe erhalte ich immer folgendes:

<!DOCTYPE html PUBLIC „-//W3C//DTD XHTML 1.0 Frameset//EN“ „http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd“>
<html>
<head>
<title>FRITZ!Box</title>
<meta http-equiv=„Content-Type“ content=„text/html; charset=utf-8“>
<meta http-equiv=„expires“ content=„0“>
<!–<link rel=„shortcut icon“ type=„image/x-icon“ href="/favicon.ico" />–>
<script type=„text/javascript“>
var g_HelpWin = null;
</script>
</head>
<frameset id=„frame_set“ rows="*">
<frame src="/logincheck.lua" id=„frame_content“ scrolling=„auto“ frameborder=„0“ />
</frameset>
<noframes>
<body>
<p>Ihr Browser unterstützt keine XHTML-Frames.</p>
<p>Sie können die <a href="/logincheck.lua">FRITZ!Box Benutzeroberfläche</a> aber trotzdem ohne Einschränkung nutzen.</p>
</body>
</noframes>
</html>

Bitte noch einen Tipp für jemanden der mit Webprogrammierung nichts zu tun hat.

Danke
René

aktueller Frame, Framequelltext. Dann ganz nach unten scrollen.

Danke.

Den Punkt Framequelltext habe ich noch nie für Voll genommen.

Rene

Hallo,
ich nutze die FRITZ!Box 2170 (Firmware-Version 51.04.57).

Ich habe obige Tipps ausprobiert, erhalte aber sowohl manuell als auch im Webfront diverse Meldungen wie:

Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 1: parser error : Space required after the Public Identifier in C:\Program Files\IPSymcon\scripts\25984.ips.php on line 12

Warning: simplexml_load_string() [function.simplexml-load-string]: <!DOCTYPE HTML PUBLIC „-//W3C//DTD HTML 4.0 Transitional//EN“> in C:\Program Files\IPSymcon\scripts\25984.ips.php on line 12

Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in C:\Program Files\IPSymcon\scripts\25984.ips.php on line 12

Ist meine FritzBox nicht geeignet für: Zeile12:
$session_status_simplexml = simplexml_load_string($login);

DANKE für jeden Tipp

Funktioniert nur mit Firmware ab xx.04.74 oder neuer. Ältere unterstützen keine Session !!

Es gibt aber auch diverse Scripts für Boxen ohne Sessionunterstütung.
Stöbere mal ein bischen im Forum rum, wirst schon fündig werden.

Also ein bischen mehr Hilfe wäre schon nett…
bis dato finde ich keine Scripts oder Anleitungen mit denen ich auf „ältere“ FritzBoxen zugreifen kann. Die Anruferliste interessiert mich nicht ich würde nur gern den DSL-Status loggen, optimal mit Bandbreite.

Kann mir jemand helfen?