Fritzbox 7270/Wlan Repeater Scripts

Hiermit kannst Du den Wlan Log auslesen.

$fritzbox_ip = 'fritz.box';
$password    = 'xxxxxx';

$ch = curl_init('http://' . $fritzbox_ip . '/cgi-bin/webcm?getpage=../html/login_sid.xml');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$login = curl_exec($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"));
    curl_setopt($ch, CURLOPT_POSTFIELDS, "login:command/response={$response}&getpage=../html/de/menus/menu2.html");
    preg_match('/name="sid" value="([0-9a-f]*)"/', curl_exec($ch), $matches);
   if (isset($matches[1]) && $matches[1] != '0000000000000000')
   {
      $SID = $matches[1];
   }
   else
   {
      echo "Fehler: Login fehlgeschlagen";
      return;
    }
}
curl_close($ch);
$logInet = file_get_contents("http://fritz.box/system/syslog.lua?tab=wlan&sid=".$SID);
print_r($logInet);

Moin…

…warum funktioniert die Rückmeldung nicht beim 5-GHz-Frequenzband Wlan?

Wenn ich das 2,4-GHz-Frequenzband Wlan schalte funktioniert es und ich bekomme den aktuellen Zustand angezeigt! Schalten funktioniert, nur die Rückmeldung nicht!
Hab das Script so angepasst:

<?

$wlan_5GHz = GetValueBoolean(22474 /*[KOMMUNIKATION\FRITZBOX\Fritzbox WLAN 5GHz\WLAN 5GHz AN / AUS]*/);




$fritzbox_ip = 'fritz.box';
$fritzgui    = 'http://fritz.box/cgi-bin/webcm';
$fritzseite  = '../html/de/menus/menu2.html';
$password    = 'xxxxxxxxxxxxxxx';
$ein         = '1';
$aus         = '0';

$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];
   }
}

if ($wlan_5GHz==true)
{
    $wlan = http_post_fields($fritzgui, array('getpage' => $fritzseite, 'sid' => $SID, 'wlan:settings/ap_enabled_scnd' => $ein));
    }
else
{
    $wlan = http_post_fields($fritzgui, array('getpage' => $fritzseite, 'sid' => $SID, 'wlan:settings/ap_enabled_scnd' => $aus));
}
//*************************TEST*****************************************************************************

$checksetting = array('getpage' => $fritzseite, 'var:menu' => 'wlan', 'var:pagename' => 'common');
    $sendcheck = http_post_fields($fritzgui, $checksetting);
    preg_match('@name="wlan:settings/ap_enabled_scnd" value="([10])"@i', $sendcheck, $matches);
    if (isset($matches[1]) && $matches[1] == 1)
    {
        SetValue(59421 /*[KOMMUNIKATION\FRITZBOX\Fritzbox WLAN 5GHz\WLAN 5GHz AN / AUS RÜCKMELDEOBJEKT]*/, true);
    }
    else
    {
       SetValue(59421 /*[KOMMUNIKATION\FRITZBOX\Fritzbox WLAN 5GHz\WLAN 5GHz AN / AUS RÜCKMELDEOBJEKT]*/, false);
	 }
//****************************************************************************************************************************************
$logout = array('getpage' => $fritzseite, 'sid' => $SID, 'security:command/logout' => 'logout');
$sendlogout = http_post_fields($fritzgui, $logout);

//print_r ($matches);
?>

Grüße,

Peter

Moin…

… keiner ne Idee!? Kann da nicht einer von den Fritzbox-Gurus mal kurz drüber schauen?

Hab es ja schon hinbekommen das zu schalten und die Fritzboxbefehle für das Wlan (5GHz) zu finden, aber die Abfrage scheint so nicht zu funktionieren!
Bekomme aber auch keine Fehlermeldung!

Danke und Grüße,
Peter

Sent from my iPhone using Tapatalk

Die Rückmeldung ist die selbe wie bei 2,4 es wird nur geprüft ob ein oder aus ist.

Jupp… nur bleibt meine Variable mit der Abfrage wie ich sie oben gepostet hab „False“!

Da muss ein Fehler drin sein! Hab die Abfrage vom 2,4 übernommen und angepasst, leider wohl nicht ganz korrekt?!

Sent from my iPhone using Tapatalk

Da ich keine 7390 habe, kann ich dazu nichts sagen. Nur, wenn es genauso wie bei 2,4 ist, was muss man da anpassen. :confused:

Also ich hab nur diese Zeile verändert:

****preg_match('@name="wlan:settings/ap_enabled_scnd"*value="([10])"@i',*$sendcheck,*$matches); 

Der unterschied zum 2,4 ist nur „ap_enabled_scnd“. Mit „_scnd“ ist das 5GHz gemeint!
Wie gesagt, schalten kann ich es, nur die Rückmeldung geht nicht!

Kann ich irgendwie Sichtbar machen was ich als Rückmeldung bekommen?!
Dann könnte ich mal Prüfen was kommt wenn das Wlan „an“ und „aus“ ist.

Bei mir ist das alles dasselbe, da muss man nix anpassen. Ich kann mir auch nicht vorstellen, dass die 7390 2 Buttons für das Wlan hat.

ein print_r($matches); hilft hier.

Doch, hat 2 Felder zum Häkchen setzten! Einmal für 2,5 und einmal für 5GHz

Sent from my iPhone using Tapatalk

Stimmt, sorry. Die kann ja beides gleichzeitig.

Nehme alles zurück und behaupte das Gegenteil. :smiley:

Haha… besser is! :slight_smile:

Kannst mir PHP-Honk mal sagen wie ich die Rückmeldung sichtbar machen kann!? Weißt was ich meine?

Sent from my iPhone using Tapatalk

Hab ich doch geschrieben, mit print_r(…

Nehme alles zurück und behaupte das Gegenteil. :smiley: :smiley:

Werde ich heute Abend mal probieren! Danke…

Sent from my iPhone using Tapatalk

…ansonsten den Code der Seite posten.

Moin …

…hab das jetzt mal getetest und die Abfrage des Status gibt jedes mal ( 5GHZ Wlan EIN oder AUS ) ein leeres Array zurück, welches so aussieht:

Array
(
)

Daher wir meine Variable auch nicht geschaltet!

PS:
Das ist zum Vergleich das Array vom 2,4 WLAN:


Array
(
    [0] => name="wlan:settings/ap_enabled" value="1"
    [1] => 1
)

probier es mal hiermit.

$checksetting = array('getpage' => $fritzseite, 'sid' => $SID, 'var:menu' => 'wlan', 'var:pagename' => 'common'); 
    $sendcheck = http_post_fields($fritzgui, $checksetting); 
    preg_match('@name="wlan:settings/ap_enabled_scnd" value="([10])"@i', $sendcheck, $matches); 
    if (isset($matches[1]) && $matches[1] == 1) 
    { 
        SetValue(59421 /*[KOMMUNIKATION\FRITZBOX\Fritzbox WLAN 5GHz\WLAN 5GHz AN / AUS RÜCKMELDEOBJEKT]*/, true); 
    } 
    else 
    { 
       SetValue(59421 /*[KOMMUNIKATION\FRITZBOX\Fritzbox WLAN 5GHz\WLAN 5GHz AN / AUS RÜCKMELDEOBJEKT]*/, false); 
     } 

Hallo Rainer,

Danke an dieser Stelle für deine Arbeit mit den FB Scripten.

Leider ist der Thread ein wenig unsortiert. Was daszu führt das vieles der Super Arbeit untergeht.

Ich habe von einem Script teilweise 3 Versionen gefunden ect.

Das was ich bis jetzt an Scripten hier gesammelt habe sind folgende.

  • Anrufbeantworter, Wlan ect an/aus
  • Rufumleitung.
  • Onlinestatus
  • Logauslesen
  • Anrufsliste

Es gibt bestimmt noch mehr die hier versteckt sind :wink:

Daher habe ich eine große Bitte.

Könnte bitte im 1. Post geflegt werden welche Scripte es für die Algemeinheit gibt. (Keine Sonderanpassungen)
mit Versionsnummer wer toll;-).

Schreibe das hier nicht aus Jucks sondern habe 2 Tage damit zugebracht dieses Thema hier zu lesen und finde schade wen was verloren geht in seinen Untiefen.

Lieben Gruß Nick

Rainer, Du bist mein Held! Funktioniert perfekt. Nun bekomme ich die Rückmeldung und kann nun auch das 2. WLAN schalten!!

1000 Dank für die Mühe!

Grüße aus HH,

Peter

Hi,

da hier soviele Profis sind, hoffe ich auf hilfe.

Ich würde gerne den WLAN-Gastzugang ein- bzw ausschalten können, jedoch wird dieser ganz anders aufgerufen.

Normalerweise sieht das so aus, am Beispiel von „Sicherheit“

<li><a href="/cgi-bin/webcm?getpage=../html/de/menus/menu2.html&var:menu=wlan&var:pagename=encrypt2&sid=1234">Sicherheit</a></li>

Beim Gastzugang, sieht das aber so aus

<li class=" selected"><a href="/wlan/guest_access.lua?sid=1234">Gastzugang</a></li>

Wie kann ich nun den Zugang schalten und wie realisiere ich die Anzeige des Schaltzustandes? Der Seitenquelltext von guest_access.lua beinhaltet die Variable „wlan:settings/guest_ap_enabled“ mit 0/1 als Zustand.

VIelen Dank vorab.

MFG
KRis

UPDATE
die Seite zum Gastzugang läßt sich mit
http://fritz.box/wlan/guest_access.lua?sid=1234 auch aufrufen.

<?
if ($IPS_SENDER == "WebFront")
{
    SetValue(50600 /*[Fritzbox\WLan\WLan ein/aus\Status WLan]*/, $IPS_VALUE);
}

$fritzbox_ip = xxx.xxx.x.x;
$fritzgui    = 'http://fritz.box/cgi-bin/webcm';
$fritzseite  = '../html/de/menus/menu2.html';
$password    = 'passwort';
$ein         = '1';
$aus         = '0';

$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];
   }
}

if ($IPS_VALUE)
{
$wlan = http_post_fields($fritzgui, array('getpage' => $fritzseite, 'sid' => $SID, 'wlan:settings/guest_ap_enabled' => $ein));
}
else
{
$wlan = http_post_fields($fritzgui, array('getpage' => $fritzseite, 'sid' => $SID, 'wlan:settings/guest_ap_enabled' => $aus));
}


$logout = array('getpage' => $fritzseite, 'sid' => $SID, 'security:command/logout' => 'logout');
$sendlogout = http_post_fields($fritzgui, $logout);

?>

Noch eine Bool-Variable zuweisen und dann sollte es gehen.