Skip to content

Instantly share code, notes, and snippets.

@Kaiyuan
Last active May 1, 2019 00:28
Show Gist options
  • Save Kaiyuan/079e28d17157c796fcb529646c75d192 to your computer and use it in GitHub Desktop.
Save Kaiyuan/079e28d17157c796fcb529646c75d192 to your computer and use it in GitHub Desktop.
Cloudflare DDNS 脚本
#!/bin/bash
NEW_IP=`curl ip.changeip.com|sed -e 's/<.*$//'`
NOWTIME=`date`
CURRENT_IP=`cat /var/tmp/current_ip.txt`
LOG_FILE="/var/log/cloudflare_ddns.log"
IP_FILE="/var/tmp/current_ip.txt"
ZONE_ID='Domain Zone ID'
LOGIN_MAIL='login@mail.com'
API_KEY='Global API Key'
DDNS_ZONE='ddns-zone-key'
DDNS_DOMAIN='ddns.domain.com'
echo ${NOWTIME} >> ${LOG_FILE}
if [ ${NEW_IP} == ${CURRENT_IP} ] || [ ! ${NEW_IP} ];
then
echo "No Change in IP Adddress "${NEW_IP} >> ${LOG_FILE}
else
THIS_LOG=$(curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/dns_records/${DDNS_ZONE}" \
-H "X-Auth-Email: ${LOGIN_MAIL}" \
-H "X-Auth-Key: ${API_KEY}" \
-H "Content-Type: application/json" \
--data '{"type":"A","name":"'${DDNS_DOMAIN}'","content":"'${NEW_IP}'","ttl":1,"proxied":false}'
)
if [ ${THIS_LOG} ]; then
echo "DDNS OK" ${NEW_IP} >> ${LOG_FILE}
echo "" >> ${LOG_FILE}
echo ${NEW_IP} > ${IP_FILE}
else
echo "Error" >> ${LOG_FILE}
fi
fi
# https://blog.tomy168.com/2017/11/cloudflare-apiddns.html
# https://blog.sometimesnaive.org/article/5
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment