开发者社区> 科技小能手> 正文

CentOS通过DNSpod实现动态域名

简介:
+关注继续查看

因为家里使用ADSL动态IP上网,有时在外面需要使用家里资源,原本使用的是TP-LINK自带的花生壳解析,用过之后发现很不稳定。因为自己注册了域名也已使用了DNSPOD解析。

1.新建脚本文件

1
vim ddns.sh

文件内容如下:

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
81
82
83
#!/bin/sh
                                                                                                                                                                                                                                                                      
#################################################
# AnripDdns v3.08.09
# 基于DNSPod用户API实现的动态域名客户端
# 作者: 若海[mail@anrip.com]
# 介绍: http://www.anrip.com/ddnspod
# 时间: 2013-08-08 23:25:00
#################################################
                                                                                                                                                                                                                                                                      
# 全局变量表
arPass=arMail=""
                                                                                                                                                                                                                                                                      
# 获得外网地址
arIpAdress() {
    local inter="http://members.3322.org/dyndns/getip"
    wget --quiet --no-check-certificate --output-document=- $inter
}
                                                                                                                                                                                                                                                                      
# 查询域名地址
# 参数: 待查询域名
arNslookup() {
    local dnsvr="114.114.114.114"
    nslookup ${1} $dnsvr | tr -d '\n[:blank:]' sed 's/.\+1 \([0-9\.]\+\)/\1/'
}
                                                                                                                                                                                                                                                                      
# 读取接口数据
# 参数: 接口类型 待提交数据
arApiPost() {
    local agent="AnripDdns/3.08(mail@anrip.com)"
    local inter="https://dnsapi.cn/${1:?'Info.Version'}"
    local param="login_email=${arMail}&login_password=${arPass}&format=json&${2}"
    wget --quiet --no-check-certificate --output-document=- --user-agent=$agent --post-data $param $inter
}
                                                                                                                                                                                                                                                                      
# 更新记录信息
# 参数: 主域名 子域名
arDdnsUpdate() {
    local domainID recordID recordRS recordCD
    # 获得域名ID
    domainID=$(arApiPost "Domain.Info" "domain=${1}")
    domainID=$(echo $domainID | sed 's/.\+{"id":"\([0-9]\+\)".\+/\1/')
    # 获得记录ID
    recordID=$(arApiPost "Record.List" "domain_id=${domainID}&sub_domain=${2}")
    recordID=$(echo $recordID | sed 's/.\+\[{"id":"\([0-9]\+\)".\+/\1/')
    # 更新记录IP
    recordRS=$(arApiPost "Record.Ddns" "domain_id=${domainID}&record_id=${recordID}&sub_domain=${2}&record_line=默认")
    recordCD=$(echo $recordRS | sed 's/.\+{"code":"\([0-9]\+\)".\+/\1/')
    # 输出记录IP
    if "$recordCD" == "1" ]; then
        echo $recordRS | sed 's/.\+,"value":"\([0-9\.]\+\)".\+/\1/'
        return 1
    fi
    # 输出错误信息
    echo $recordRS | sed 's/.\+,"message":"\([^"]\+\)".\+/\1/'
}
# 动态检查更新
# 参数: 主域名 子域名
arDdnsCheck() {
    local postRS
    local hostIP=$(arIpAdress)
    local lastIP=$(arNslookup "${2}.${1}")
    echo "hostIP: ${hostIP}"
    echo "lastIP: ${lastIP}"
    if "$lastIP" != "$hostIP" ]; then
        postRS=$(arDdnsUpdate $1 $2)
        echo "postRS: ${postRS}"
        if [ $? -ne 1 ]; then
            return 0
        fi
    fi
    return 1
}
                                                                                                                                                                                                                                                                      
###################################################
                                                                                                                                                                                                                                                                      
# 设置用户参数
arMail="user@anrip.com"
arPass="anrip.net"
                                                                                                                                                                                                                                                                      
# 检查更新域名
arDdnsCheck "anrip.com" "lab"
arDdnsCheck "anrip.net" "lab"

ps:以上代码来自http://www.anrip.com/post/872

我们只需要将上面的

# 设置用户参数
arMail="user@anrip.com"     //DNSPOD用户名
arPass="anrip.net"                //DNSPOD密码
# 检查更新域名
arDdnsCheck"anrip.com"  "lab"     //需要更新的域名为anrip.com,主机为lab,就是lab.anrip.com
arDdnsCheck"anrip.net"  "lab"      //更新lab.anrip.net

修改成自己的信息即可


3.增加执行权限

1
chmod +x /root/ddns.sh


4.加入任务计划(5分钟执行一次)

1
echo "*/5  * * * * root /root/ddns.sh" >> /etc/crontab


计划任务执行情况可以查看/var/log/cron

说明:

如果在执行后发现

1
2
3
4
5
[root@localhost ~]# ./ddns.sh
./ddns.sh: line 24: nslookupcommand not found
hostIP: 114.234.77.222
lastIP:
postRS: 114.234.77.222

如果你使用的是CentOS则执行

1
yum -y install bind-utils

或者是ubuntu的话

1
sudo apt-get install dnsutils



本文转自 rong341233 51CTO博客,原文链接:http://blog.51cto.com/fengwan/1404534

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
CentOS7安装MySQL5.7太慢了
CentOS7安装MySQL5.7太慢了
404 0
CentOS8 服务器安装MySQL
安装 查看状态 开启: 使用MySQL 设置密码&&外部访问
196 0
centos7安装mysql5.6.38史上最详细的安装步骤
最近由于要用到mysql,就想着装一个mysql,但是因为我的虚拟机是centos7的,centos7将默认数据库mysql替换成了Mariadb安装起来就比较的麻烦,遇到各种各样的问题,网上的教程很多,但是基本没有好使的,按照他们的步骤到最后没有一个成功的,搞了很长时间才装好,我记得之前在centos6.5上面安装也没那么复杂啊,但是在7上面不管是用yum方式,还是安装包的方式都搞了好几遍,最后用安装包的方式安装成功了,今天就来总结一下安装的过程.为了方便大家看整个过程,我又重新装了一遍.过程写的比较详细,建议大家先收藏在观看.
150 0
阿里云centos安装mysql
阿里云centos安装mysql
214 0
centos7 安装指定版本的mysql8.0
centos7 安装指定版本的mysql8.0
367 0
三十五、Centos安装mysql(rpm终结版)
三十五、Centos安装mysql(rpm终结版)
121 0
centos8重装MySQL8
前言: 本来也不想卸载的,因为之前有往db里插入一千多万的数据了。。但是这个数据库好像被我弄坏了。。 输入正确的账号密码一直进不了 很无奈。。 😵 一开始是启动不了,后来发现用户的权限不对(要通过 chgrp 和 chown 去修改),改了之后可以启动,但是就无法登录成功了。。出此下策,顺便换个方式再去插入数据试试 😄
84 0
mysql问题记录:centos7无法启动mysql
mysql问题记录:centos7无法启动mysql
66 0
CentOS7 部署 MySQL 主从复制,读写分离
在实际的生产环境中,如果对数据库的读写都在同一个数据库服务器中操作,无论是在安全性、高可用性还是高并发等各个方面都是完全不能满足实际需求的,因此,一般来说都是通过主从复制(Master-Slave)的方式来同步数据,再通过读写分离来提升数据库的并发负载能力这样的方案来进行部署与实施的。
180 0
CentOS7 MySQL 增量备份与恢复
CentOS7 MySQL 增量备份与恢复
120 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
CentOS Nginx PHP JAVA多语言镜像使用手册
立即下载
CentOS Nginx PHP JAVA 多语言镜像使用手
立即下载
低代码开发师(初级)实战教程
立即下载