cloudflare 这个域名服务商它提供了 域名更新的api,所以可以使用脚本来更新域名,如果是动态更新会更好。
把这个如果加入cron计划任务那就更完美了
#!/bin/bash Green_font="\033[32m" && Red_font="\033[31m" && Font_suffix="\033[0m" Info="${Green_font}[Info]${Font_suffix}" Error="${Red_font}[Error]${Font_suffix}" echo -e "${Green_font} #======================================= # Project: auto_update_cloudflare_ddns # Version: 1.0 # Author: sinoll # blog: sinoll.com # document: https://api.cloudflare.com/#zone-properties #======================================= ${Font_suffix}" check_root(){ [[ "`id -u`" != "0" ]] && echo -e "${Error} must be root user !" && exit 1 } directory(){ [[ ! -d /root/ddns_auto_update ]] && echo -e "${Error} This script must be executed under the directory '/root/ddns_auto_update', please check !" && exit 1 cd /root/ddns_auto_update } define(){ [[ ! -f config.conf ]] && echo -e "${Error} can not found config.conf file, please check !" && exit 1 email=`cat config.conf | grep "email" | awk -F "=" '{print $NF}'` zone_id=`cat config.conf | grep "zone_id" | awk -F "=" '{print $NF}'` api_key=`cat config.conf | grep "api_key" | awk -F "=" '{print $NF}'` type=`cat config.conf | grep "type" | awk -F "=" '{print $NF}'` record_id=`cat config.conf | grep "record_id" | awk -F "=" '{print $NF}'` domain=`cat config.conf | grep "domain" | awk -F "=" '{print $NF}'` ttl=`cat config.conf | grep "ttl" | awk -F "=" '{print $NF}'` echo -e "${Info} get the curent ipadress... " dynamic_ip=`curl getip.sinoll.com` } read_oldip(){ [[ ! -f oldip.txt ]] && echo -e "${Error} can not found oldip file, please check !" && exit 1 oldip=`cat oldip.txt | grep "ip" | awk -F "=" '{print $NF}'` } updateip(){ if [[ "${oldip}" == "${dynamic_ip}" ]]; then echo -e "${Info} the ipadress is not changed, so not update_record!" && exit 1 else echo -e "${Info} update the ddns ipadress now ..." res=$(update_record) echo -e "${res}" >result.txt if [[ "${res}" == *"\"success\":true"* ]]; then echo -e "${Info} the ddns ip updated!" echo "ip=${dynamic_ip}" > oldip.txt exit 1 fi fi } update_record(){ curl -X PUT "https://api.cloudflare.com/client/v4/zones/${zone_id}/dns_records/${record_id}" \ -H "X-Auth-Email: ${email}" \ -H "X-Auth-Key: ${api_key}" \ -H "Content-Type: application/json" \ --data '{"type":"'${type}'", "name":"'${domain}'", "content":"'${dynamic_ip}'", "ttl":'${ttl}', "proxied":false}' } check_root directory define read_oldip updateip
config.conf文件大概内容
email=你登录cloudflare的邮箱地址
zone_id=在cloudflare上查找
api_key=在cloudflare上查找
type=A
record_id=初次运行脚本时在生成的result.txt文件中查找
domain=你的域名
ttl=120 最小2分钟
参考了南琴浪的脚本
https://github.com/nanqinlang-script/CloudFlare_DNS_Record