Ich mache das DYNDNS-Update auch mit einem kleinen Script per cron - im vorliegenden Fall alle vier Stunden, aber das Script kann prinzipiell auch minütlich aufgerufen werden. Die Logdatei wird - ebenfalls per Script und cron - automatisch auf eine bestimmte Zahl an Einträgen gekürzt.
Gruß Jürgen
<?php
$timestamp = time();
$datum = date("d.m.Y",$timestamp);
$uhrzeit = date("H:i",$timestamp);
$Host = "xyz.nsupdate.info";
$IP_Abfrage = "https://ipv4.nsupdate.info/myip";
$IP1 = file_get_contents($IP_Abfrage);
$IP2 = gethostbyname($Host);
$check1 = ip2long($IP1);
$check2 = ip2long($IP2);
if ($check1 == -1 || $check1 === FALSE) {
$resonse = "IP konnte nicht ermittelt werden";
} elseif ($check2 == -1 || $check2 === FALSE) {
$response = "Service nicht erreichbar";
} else {
if ($IP1 == $IP2) {
$response = "IP noch aktuell";
} else {
$response = file_get_contents('https://xyz.nsupdate.info:xxxxxxx@ipv4.nsupdate.info/nic/update');
if (strpos($response,"good") !== FALSE || strpos($response,"nochg") !== FALSE) {
$response = "IP aktualisiert - " . $response;
} else {
$response = "Update fehlgeschlagen";
}
}
};
$info = $datum . " " . $uhrzeit . " - " . $response;
$URL = 'https://user:pass@meinedomain.tld/verzeichnis/nsupdate_log.php?response='.urlencode($info);
$handle = fopen($URL, "r");
?>
<?php
$Log = $_GET['response'];
$logfile = "nsupdate.log";
$zeilen = 60;
$handle = fopen($logfile, "a+") or die('Datei kann nicht zum Schreiben geöffnet werden');
fwrite($handle, $Log . "\n");
fclose($handle);
file_put_contents($logfile, implode("\n", array_slice(explode("\n", file_get_contents($logfile)), -($zeilen+1))));
?>