天天看點

CentOS通過DNSpod實作動态域名

因為家裡使用ADSL動态IP上網,有時在外面需要使用家裡資源,原本使用的是TP-LINK自帶的花生殼解析,用過之後發現很不穩定。因為自己注冊了域名也已使用了DNSPOD解析。

1.建立腳本檔案

1

<code>vim ddns.sh</code>

檔案内容如下:

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

81

82

83

<code>#!/bin/sh</code>

<code>                                                                                                                                                                                                                                                                     </code> 

<code>#################################################</code>

<code># AnripDdns v3.08.09</code>

<code># 基于DNSPod使用者API實作的動态域名用戶端</code>

<code># 作者: 若海[[email protected]]</code>

<code># 介紹: http://www.anrip.com/ddnspod</code>

<code># 時間: 2013-08-08 23:25:00</code>

<code># 全局變量表</code>

<code>arPass=arMail=</code><code>""</code>

<code># 獲得外網位址</code>

<code>arIpAdress() {</code>

<code>    </code><code>local</code> <code>inter=</code><code>"http://members.3322.org/dyndns/getip"</code>

<code>    </code><code>wget --quiet --no-check-certificate --output-document=- $inter</code>

<code>}</code>

<code># 查詢域名位址</code>

<code># 參數: 待查詢域名</code>

<code>arNslookup() {</code>

<code>    </code><code>local</code> <code>dnsvr=</code><code>"114.114.114.114"</code>

<code>    </code><code>nslookup</code> <code>${1} $dnsvr | </code><code>tr</code> <code>-d </code><code>'\n[:blank:]'</code> <code>| </code><code>sed</code> <code>'s/.\+1 \([0-9\.]\+\)/\1/'</code>

<code># 讀取接口資料</code>

<code># 參數: 接口類型 待送出資料</code>

<code>arApiPost() {</code>

<code>    </code><code>local</code> <code>agent=</code><code>"AnripDdns/3.08([email protected])"</code>

<code>    </code><code>local</code> <code>inter=</code><code>"https://dnsapi.cn/${1:?'Info.Version'}"</code>

<code>    </code><code>local</code> <code>param=</code><code>"login_email=${arMail}&amp;login_password=${arPass}&amp;format=json&amp;${2}"</code>

<code>    </code><code>wget --quiet --no-check-certificate --output-document=- --user-agent=$agent --post-data $param $inter</code>

<code># 更新記錄資訊</code>

<code># 參數: 主域名 子域名</code>

<code>arDdnsUpdate() {</code>

<code>    </code><code>local</code> <code>domainID recordID recordRS recordCD</code>

<code>    </code><code># 獲得域名ID</code>

<code>    </code><code>domainID=$(arApiPost </code><code>"Domain.Info"</code> <code>"domain=${1}"</code><code>)</code>

<code>    </code><code>domainID=$(</code><code>echo</code> <code>$domainID | </code><code>sed</code> <code>'s/.\+{"id":"\([0-9]\+\)".\+/\1/'</code><code>)</code>

<code>    </code><code># 獲得記錄ID</code>

<code>    </code><code>recordID=$(arApiPost </code><code>"Record.List"</code> <code>"domain_id=${domainID}&amp;sub_domain=${2}"</code><code>)</code>

<code>    </code><code>recordID=$(</code><code>echo</code> <code>$recordID | </code><code>sed</code> <code>'s/.\+\[{"id":"\([0-9]\+\)".\+/\1/'</code><code>)</code>

<code>    </code><code># 更新記錄IP</code>

<code>    </code><code>recordRS=$(arApiPost </code><code>"Record.Ddns"</code> <code>"domain_id=${domainID}&amp;record_id=${recordID}&amp;sub_domain=${2}&amp;record_line=預設"</code><code>)</code>

<code>    </code><code>recordCD=$(</code><code>echo</code> <code>$recordRS | </code><code>sed</code> <code>'s/.\+{"code":"\([0-9]\+\)".\+/\1/'</code><code>)</code>

<code>    </code><code># 輸出記錄IP</code>

<code>    </code><code>if</code> <code>[ </code><code>"$recordCD"</code> <code>== </code><code>"1"</code> <code>]; </code><code>then</code>

<code>        </code><code>echo</code> <code>$recordRS | </code><code>sed</code> <code>'s/.\+,"value":"\([0-9\.]\+\)".\+/\1/'</code>

<code>        </code><code>return</code> <code>1</code>

<code>    </code><code>fi</code>

<code>    </code><code># 輸出錯誤資訊</code>

<code>    </code><code>echo</code> <code>$recordRS | </code><code>sed</code> <code>'s/.\+,"message":"\([^"]\+\)".\+/\1/'</code>

<code># 動态檢查更新</code>

<code>arDdnsCheck() {</code>

<code>    </code><code>local</code> <code>postRS</code>

<code>    </code><code>local</code> <code>hostIP=$(arIpAdress)</code>

<code>    </code><code>local</code> <code>lastIP=$(arNslookup </code><code>"${2}.${1}"</code><code>)</code>

<code>    </code><code>echo</code> <code>"hostIP: ${hostIP}"</code>

<code>    </code><code>echo</code> <code>"lastIP: ${lastIP}"</code>

<code>    </code><code>if</code> <code>[ </code><code>"$lastIP"</code> <code>!= </code><code>"$hostIP"</code> <code>]; </code><code>then</code>

<code>        </code><code>postRS=$(arDdnsUpdate $1 $2)</code>

<code>        </code><code>echo</code> <code>"postRS: ${postRS}"</code>

<code>        </code><code>if</code> <code>[ $? -</code><code>ne</code> <code>1 ]; </code><code>then</code>

<code>            </code><code>return</code> <code>0</code>

<code>        </code><code>fi</code>

<code>    </code><code>return</code> <code>1</code>

<code>###################################################</code>

<code># 設定使用者參數</code>

<code>arMail=</code><code>"[email protected]"</code>

<code>arPass=</code><code>"anrip.net"</code>

<code># 檢查更新域名</code>

<code>arDdnsCheck </code><code>"anrip.com"</code> <code>"lab"</code>

<code>arDdnsCheck </code><code>"anrip.net"</code> <code>"lab"</code>

我們隻需要将上面的

# 設定使用者參數

arMail="[email protected]"     //DNSPOD使用者名

arPass="anrip.net"                //DNSPOD密碼

# 檢查更新域名

arDdnsCheck"anrip.com"  "lab"     //需要更新的域名為anrip.com,主機為lab,就是lab.anrip.com

arDdnsCheck"anrip.net"  "lab"      //更新lab.anrip.net

修改成自己的資訊即可

3.增加執行權限

<code>chmod</code> <code>+x </code><code>/root/ddns</code><code>.sh</code>

4.加入任務計劃(5分鐘執行一次)

<code>echo</code> <code>"*/5  * * * * root /root/ddns.sh"</code> <code>&gt;&gt; </code><code>/etc/crontab</code>

計劃任務執行情況可以檢視/var/log/cron

說明:

如果在執行後發現

<code>[root@localhost ~]</code><code># ./ddns.sh</code>

<code>.</code><code>/ddns</code><code>.sh: line 24: </code><code>nslookup</code><code>: </code><code>command</code> <code>not found</code>

<code>hostIP: 114.234.77.222</code>

<code>lastIP:</code>

<code>postRS: 114.234.77.222</code>

如果你使用的是CentOS則執行

<code>yum -y </code><code>install</code> <code>bind-utils</code>

或者是ubuntu的話

<code>sudo</code> <code>apt-get </code><code>install</code> <code>dnsutils</code>

<code></code>

本文轉自 rong341233 51CTO部落格,原文連結:http://blog.51cto.com/fengwan/1404534

繼續閱讀