$ git clone git@github.com:jameszhan/dnspod-ddns.git
$ cd dnspod-ddns/
本脚本执行依赖于Python2 或 Python3
$ cp dnspod_ddns.sh /opt/bin/dnspod_ddns
$ sudo chmod +x /opt/bin/dnspod_ddns
本脚本执行依赖于Ruby
$ gem install faraday
$ cp dnspod_ddns.rb /opt/bin/dnspod_ddns
$ sudo chmod +x /opt/bin/dnspod_ddns
本脚本执行依赖于Python3
$ pip3 install requests
$ cp dnspod_ddns.py /opt/bin/dnspod_ddns
$ sudo chmod +x /opt/bin/dnspod_ddns
$ export DNSPOD_LOGIN_TOKEN=id,token
$ export DNSPOD_DOMAIN=your.domain.com
$ export DNSPOD_SUB_DOMAIN=@
$ /opt/bin/dnspod_ddns
也可以通过命令行方式指定参数
$ export DNSPOD_LOGIN_TOKEN=id,token
$ export DNSPOD_DOMAIN=your.domain.com
$ /opt/bin/dnspod_ddns '*'
$ export DNSPOD_LOGIN_TOKEN=id,token
$ /opt/bin/dnspod_ddns '*' 'yourdomain.com'
/opt/bin/dnspod_ddns '*' 'yourdomain.com' 'id,token'
$ crontab -e
进入编辑器,添加如下内容,每10分钟执行一次同步任务
*/10 * * * * /opt/bin/dnspod_ddns '@' 'yourdomain.com' 'id,token' > /dev/null
如果要使用系统环境变量,可以把如下配置加入到/etc/environment
DNSPOD_LOGIN_TOKEN=id,token
DNSPOD_DOMAIN=your.domain.com
DNSPOD_SUB_DOMAIN=@
*/10 * * * * /opt/bin/dnspod_ddns > /dev/null
也可以直接把依赖的环境变量,配置在cron
配置文件当中
DNSPOD_LOGIN_TOKEN=id,token
DNSPOD_DOMAIN=your.domain.com
DNSPOD_SUB_DOMAIN=@
*/10 * * * * /opt/bin/dnspod_ddns > /dev/null
DNSPOD_LOGIN_TOKEN=id,token
DNSPOD_DOMAIN=your.domain.com
*/10 * * * * /opt/bin/dnspod_ddns '@' > /dev/null
*/10 * * * * /opt/bin/dnspod_ddns '*' > /dev/null
$ sudo vim /etc/rsyslog.d/50-default.conf
去掉cron
前面的注释(#)。
$ sudo systemctl restart rsyslog
检查cron进程状态和任务配置
$ sudo systemctl restart cron
$ sudo service cron status
# 或
$ sudo systemctl status cron
$ crontab -l
$ export DNSPOD_LOGIN_TOKEN=id,token
# 查询目标DNS记录详情
$ curl -X POST https://dnsapi.cn/Record.List \
-H "User-Agent: DNSPod-DDNS/1.0.0" \
-d "login_token=${DNSPOD_LOGIN_TOKEN}&format=json&domain=zizhizhan.com&record_type=A&sub_domain=@" \
| python3 -m json.tool
# 获取目标DNS记录ID
$ curl -X POST https://dnsapi.cn/Record.List \
-H "User-Agent: DNSPod-DDNS/1.0.0" \
-d "login_token=${DNSPOD_LOGIN_TOKEN}&format=json&domain=zizhizhan.com&record_type=A&sub_domain=@" \
| python3 -c "import sys,json; ret=json.load(sys.stdin); print(ret.get('records', [{}])[0].get('id', ''))"
# 同步本地外网IP到DNSPod
$ curl -X POST https://dnsapi.cn/Record.Modify \
-H "User-Agent: DNSPod-DDNS/1.0.0" \
-d "login_token=${DNSPOD_LOGIN_TOKEN}&format=json&record_id=548361017&value=8.8.8.8&domain=zizhizhan.com&sub_domain=@&record_type=A&record_line=默认"
$ telnet ns1.dnspod.net 6666
$ curl -i http://myip.ipip.net/
$ curl -i http://www.httpbin.org/ip
$ curl -i http://whatismyip.akamai.com
$ curl -i http://ipecho.net/plain
$ curl -i http://myip.dnsomatic.com