RWN
22. November 2011 um 22:33
261
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
RWN
25. November 2011 um 16:34
264
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
RWN
25. November 2011 um 17:02
266
Da ich keine 7390 habe, kann ich dazu nichts sagen. Nur, wenn es genauso wie bei 2,4 ist, was muss man da anpassen.
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.
RWN
25. November 2011 um 17:24
268
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
RWN
25. November 2011 um 17:42
270
Stimmt, sorry. Die kann ja beides gleichzeitig.
Nehme alles zurück und behaupte das Gegenteil.
Haha… besser is!
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
RWN
25. November 2011 um 17:46
272
Hab ich doch geschrieben, mit print_r(…
Nehme alles zurück und behaupte das Gegenteil.
Werde ich heute Abend mal probieren! Danke…
Sent from my iPhone using Tapatalk
RWN
25. November 2011 um 18:07
274
…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
)
RWN
26. November 2011 um 11:53
276
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
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
RWN:
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);
}
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
kris
27. November 2011 um 11:23
279
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.