Hi!
So sieht das dann aus:
Alles was ihr dazu braucht ist dieses Skript:
<?
/****** IPv4 + IPv6 Adresse + Prefix aus der Fritz!Box auslesen (per SOAP/UPnP) ******
/*
/* Das Skript muss nur einmal ausgeführt werden, dann werden der Timer und die
/* Variablen automatisch angelegt!
/*
/* Script v1.2 by Bayaro (for IP-Symcon) */
/* [Fritz!Box - Alle externen IP Adressen auslesen (IPv4 + IPv6 + IPv6 Prefix)](https://www.symcon.de/forum/threads/28598-Fritz%21Box-Alle-externen-IP-Adressen-auslesen-%28IPv4-IPv6-IPv6-Prefix%29) */
/**** Konfiguration *********************/
$IPv4auslesen = true; // true/false
$IPv6auslesen = true; // true/false
/****************************************/
// *** Timer erstellen *******************************************************************
IPS_SetScriptTimer($_IPS['SELF'], 600); // Alle 600 Sekunden (10 Minuten) die IP-Adressen abfragen
// *** IPv4 Adresse auslesen *************************************************************
if ($IPv4auslesen == true) {
$client = new SoapClient(
null,
array(
'location' => "http://fritz.box:49000/igdupnp/control/WANIPConn1",
'uri' => "urn:schemas-upnp-org:service:WANIPConnection:1",
'noroot' => True
)
);
$IPv4 = $client->GetExternalIPAddress();
//print_r($IPv4);
$IPv4_Address_VarID = CreateVariableByName($_IPS['SELF'], "IPv4 Adresse", 3, "", "");
if (GetValue($IPv4_Address_VarID) != $IPv4) {
SetValue($IPv4_Address_VarID, $IPv4);
}
}
// *** IPv6 Adresse auslesen *************************************************************
if ($IPv6auslesen == true) {
$client1 = new SoapClient(
null,
array(
'location' => "http://fritz.box:49000/igdupnp/control/WANIPConn1",
'uri' => "urn:schemas-upnp-org:service:WANIPConnection:1",
'noroot' => True
)
);
$IPv6 = $client1->X_AVM_DE_GetExternalIPv6Address();
//print_r($IPv6);
$IPv6_Address_VarID = CreateVariableByName($_IPS['SELF'], "IPv6 Adresse", 3, "", "");
if (GetValue($IPv6_Address_VarID) != $IPv6['NewExternalIPv6Address']) {
SetValue($IPv6_Address_VarID, $IPv6['NewExternalIPv6Address']);
}
// *** IPv6 Prefix auslesen **************************************************************
$client2 = new SoapClient(
null,
array(
'location' => "http://fritz.box:49000/igdupnp/control/WANIPConn1",
'uri' => "urn:schemas-upnp-org:service:WANIPConnection:1",
'noroot' => True
)
);
$IPv6pre = $client2->X_AVM_DE_GetIPv6Prefix();
//print_r($IPv6pre);
$IPv6_Prefix_VarID = CreateVariableByName($_IPS['SELF'], "IPv6 Prefix", 3, "", "");
if (GetValue($IPv6_Prefix_VarID) != $IPv6pre['NewIPv6Prefix']) {
SetValue($IPv6_Prefix_VarID, $IPv6pre['NewIPv6Prefix']);
}
}
function CreateVariableByName($ParentID, $VarName, $VarTyp, $VarProfile = "", $VarActionScript = "") {
$VarID = @IPS_GetVariableIDByName($VarName, $ParentID);
if($VarID === false) {
$VarID = IPS_CreateVariable($VarTyp);
IPS_SetParent($VarID, $ParentID);
IPS_SetName($VarID, $VarName);
IPS_SetInfo($VarID, "This variable was created by script #".$_IPS['SELF']);
if($VarProfile !== "") {
IPS_SetVariableCustomProfile($VarID, $VarProfile);
}
if($VarActionScript !== "") {
IPS_SetVariableCustomAction($VarID, $VarActionScript);
}
}
return $VarID;
}
?>
Sollte eure Fritz!Box nicht über „fritz.box“ erreichbar sein, dann müssen die entsprechenden Stellen im Skript gegen den korrekten DNS-Namen oder die entsprechende interne IP-Adresse ausgetauscht werden.
>> Update v1.2 >> IPv6 an einer anderen Stelle über SOAP abfragen, damit es auch bei älteren FritzOS Versionen funktionieren sollte
Grüße,
Chris