<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://banzhaf.chickenkiller.com/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Fritz_Box_External_IP</id>
	<title>Fritz Box External IP - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://banzhaf.chickenkiller.com/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Fritz_Box_External_IP"/>
	<link rel="alternate" type="text/html" href="https://banzhaf.chickenkiller.com/mediawiki/index.php?title=Fritz_Box_External_IP&amp;action=history"/>
	<updated>2026-07-06T04:15:12Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.1</generator>
	<entry>
		<id>https://banzhaf.chickenkiller.com/mediawiki/index.php?title=Fritz_Box_External_IP&amp;diff=14648&amp;oldid=prev</id>
		<title>Joachim: Created page with &quot;= DynDNS =  Recently dyndns updates on external IP changes did not always work. This should make it more robust.  IP from fritzbox taken from https://wiki.ubuntuusers.de/Fritz...&quot;</title>
		<link rel="alternate" type="text/html" href="https://banzhaf.chickenkiller.com/mediawiki/index.php?title=Fritz_Box_External_IP&amp;diff=14648&amp;oldid=prev"/>
		<updated>2020-07-30T10:29:35Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;= DynDNS =  Recently dyndns updates on external IP changes did not always work. This should make it more robust.  IP from fritzbox taken from https://wiki.ubuntuusers.de/Fritz...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= DynDNS =&lt;br /&gt;
&lt;br /&gt;
Recently dyndns updates on external IP changes did not always work. This should make it more robust.&lt;br /&gt;
&lt;br /&gt;
IP from fritzbox taken from https://wiki.ubuntuusers.de/FritzBox/Skripte/&lt;br /&gt;
&lt;br /&gt;
== Read external IP from Fritzbox ==&lt;br /&gt;
&lt;br /&gt;
/usr/local/bin/fb-ip.sh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$1&amp;quot; == &amp;quot;&amp;quot; ]; then&lt;br /&gt;
  FB=&amp;quot;fritz.box&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
  FB=&amp;quot;$1&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
curl &amp;quot;http://${FB}:49000/igdupnp/control/WANIPConn1&amp;quot; \&lt;br /&gt;
  -H &amp;quot;Content-Type: text/xml; charset=&amp;quot;utf-8&amp;quot;&amp;quot; \&lt;br /&gt;
  -H &amp;quot;SoapAction:urn:schemas-upnp-org:service:WANIPConnection:1#GetExternalIPAddress&amp;quot; \&lt;br /&gt;
  -d &amp;quot;&amp;lt;?xml version=&amp;#039;1.0&amp;#039; encoding=&amp;#039;utf-8&amp;#039;?&amp;gt; &lt;br /&gt;
      &amp;lt;s:Envelope &lt;br /&gt;
        s:encodingStyle=&amp;#039;http://schemas.xmlsoap.org/soap/encoding/&amp;#039; xmlns:s=&amp;#039;http://schemas.xmlsoap.org/soap/envelope/&amp;#039;&amp;gt; &lt;br /&gt;
        &amp;lt;s:Body&amp;gt; &lt;br /&gt;
          &amp;lt;u:GetExternalIPAddress xmlns:u=&amp;#039;urn:schemas-upnp-org:service:WANIPConnection:1&amp;#039; /&amp;gt; &lt;br /&gt;
        &amp;lt;/s:Body&amp;gt; &lt;br /&gt;
      &amp;lt;/s:Envelope&amp;gt;&amp;quot; \&lt;br /&gt;
  -s | grep -Eo &amp;#039;\&amp;lt;[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}\&amp;gt;&amp;#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Compare external IP with DNS entry ==&lt;br /&gt;
&lt;br /&gt;
/usr/local/bin/check-ip.sh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$1&amp;quot; == &amp;quot;&amp;quot; ]; then&lt;br /&gt;
  CN=&amp;quot;banzhaf.chickenkiller.com&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
  CN=&amp;quot;$1&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$2&amp;quot; == &amp;quot;&amp;quot; ]; then&lt;br /&gt;
  FB=&amp;quot;fritz.box&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
  FB=&amp;quot;$2&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
XIP=`/usr/local/bin/fb-ip.sh &amp;quot;$FB&amp;quot;`&lt;br /&gt;
DIP=`dig +short &amp;quot;$CN&amp;quot;`&lt;br /&gt;
if [ &amp;quot;$XIP&amp;quot; == &amp;quot;$DIP&amp;quot; ]; then&lt;br /&gt;
  echo &amp;quot;OK&amp;quot;&lt;br /&gt;
  exit 0&lt;br /&gt;
fi&lt;br /&gt;
echo &amp;quot;ERROR&amp;quot;&lt;br /&gt;
exit 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Update DynDNS if external IP does not match DNS entry ==&lt;br /&gt;
&lt;br /&gt;
if there is a mismatch between external IP and DNS, give it some time and then fix it&lt;br /&gt;
&lt;br /&gt;
/usr/local/bin/ensure-ip.sh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
DELAY_S=120&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$1&amp;quot; == &amp;quot;&amp;quot; ]; then&lt;br /&gt;
  CN=&amp;quot;banzhaf.chickenkiller.com&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
  CN=&amp;quot;$1&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$2&amp;quot; == &amp;quot;&amp;quot; ]; then&lt;br /&gt;
  FB=&amp;quot;fritz.box&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
  FB=&amp;quot;$2&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if ! check-ip.sh &amp;quot;$CN&amp;quot; &amp;quot;$FB&amp;quot; &amp;gt;/dev/null; then&lt;br /&gt;
  echo &amp;quot;Check IP failed. Waiting to settle&amp;quot;&lt;br /&gt;
  SINCE=$SECONDS&lt;br /&gt;
  while [ $((SECONDS - SINCE)) -lt $DELAY_S ]; do&lt;br /&gt;
    sleep 1&lt;br /&gt;
    if check-ip.sh &amp;quot;$CN&amp;quot; &amp;quot;$FB&amp;quot; &amp;gt;/dev/null; then&lt;br /&gt;
      echo &amp;quot;Check IP recovered.&amp;quot;&lt;br /&gt;
      exit 0&lt;br /&gt;
    fi&lt;br /&gt;
  done&lt;br /&gt;
  echo &amp;quot;Check IP still fails. Updating DNS&amp;quot;&lt;br /&gt;
  update-dns.sh&lt;br /&gt;
  SINCE=$SECONDS&lt;br /&gt;
  while [ $((SECONDS - SINCE)) -lt $DELAY_S ]; do&lt;br /&gt;
    sleep 1&lt;br /&gt;
    if check-ip.sh &amp;quot;$CN&amp;quot; &amp;quot;$FB&amp;quot; &amp;gt;/dev/null; then&lt;br /&gt;
      echo &amp;quot;IP updated.&amp;quot;&lt;br /&gt;
      exit 0&lt;br /&gt;
    fi&lt;br /&gt;
  done&lt;br /&gt;
  echo &amp;quot;Updating DNS failed&amp;quot;&lt;br /&gt;
  exit 1&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Joachim</name></author>
	</entry>
</feed>