DynDNS mit der INWX XML-RPC API

Shellscript  (20.09.2010 21:38) Ein Script das via XML-RPC API von inwx.de die WAN IP eines OpenWRT Routers als A-Recors setzt.
Weitere Informationen gibt es in Blog.

Quellcode (ausblenden | aufklappen)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#!/bin/bash
#------------------------------------------------------------------------------------------------------------
# /root/updatedomain.sh
#------------------------------------------------------------------------------------------------------------
 
if [ ! -f /root/updatedomainlastip ]; then
   touch /root/updatedomainlastip
fi
 
current_ip=$(cat /root/updatedomainlastip)
wan_ip=`ifconfig ppp0 | grep "inet addr:" | cut -d ':' -f2 | cut -d ' ' -f1`
 
if [ ! "$wan_ip" == "$current_ip" ]; then
 
wget -q --user-agent="Mozilla/4.0" \
--header="Host: api.domrobot.com" \
--header="Content-Type: text/xml" \
--post-data="$(cat /root/updatedata.xml | sed "s/%wan_ip%/$wan_ip/g")" \
--no-check-certificate -O - \
https://api.domrobot.com/xmlrpc/nameserver
 
echo $wan_ip > /root/updatedomainlastip
 
else
 
echo "do nothing...";
 
fi
 
#------------------------------------------------------------------------------------------------------------
# /root/updatedata.xml
#------------------------------------------------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<methodCall>
   <methodName>updateRecord</methodName>
   <params>
      <param>
         <value>
            <struct>
               <member>
                  <name>user</name>
                  <value>
                     <string>my_username</string>
                  </value>
               </member>
               <member>
                  <name>lang</name>
                  <value>
                     <string>en</string>
                  </value>
               </member>
               <member>
                  <name>pass</name>
                  <value>
                     <string>my_password</string>
                  </value>
               </member>
               <member>
                  <name>id</name>
                  <value>
                     <int>10777xxxx</int>
                  </value>
               </member>
               <member>
                  <name>content</name>
                  <value>
                     <string>%wan_ip%</string>
                  </value>
               </member>
               <member>
                  <name>ttl</name>
                  <value>
                     <int>300</int>
                  </value>
               </member>
            </struct>
         </value>
      </param>
   </params>
</methodCall>