-
-
Save 4ft35t/510897486bc6986d19cac45b3b9ca1d0 to your computer and use it in GitHub Desktop.
| #!/bin/bash | |
| # CHANGE THESE | |
| auth_email="[email protected]" | |
| auth_key="c2547eb745079dac9320b638f5e225cf483cc5cfdda41" # found in cloudflare account settings | |
| zone_name="example.com" | |
| record_name="www.example.com" | |
| # MAYBE CHANGE THESE | |
| ip=$(curl -s http://ipv4.icanhazip.com) | |
| ip_file="ip.txt" | |
| log_file="cloudflare.log" | |
| # LOGGER | |
| log() { | |
| if [ "$1" ]; then | |
| echo "[$(date)] - $1" >> $log_file | |
| fi | |
| } | |
| # SCRIPT START | |
| log "Check Initiated" | |
| if [ -f $ip_file ]; then | |
| old_ip=$(cat $ip_file) | |
| if [ $ip == $old_ip ]; then | |
| echo "IP has not changed." | |
| exit 0 | |
| fi | |
| fi | |
| zone_identifier=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones?name=$zone_name" -H "X-Auth-Email: $auth_email" -H "X-Auth-Key: $auth_key" -H "Content-Type: application/json" | grep -Po '(?<="id":")[^"]*' | head -1 ) | |
| record_identifier=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$zone_identifier/dns_records?name=$record_name" -H "X-Auth-Email: $auth_email" -H "X-Auth-Key: $auth_key" -H "Content-Type: application/json" | grep -Po '(?<="id":")[^"]*') | |
| update=$(curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/$zone_identifier/dns_records/$record_identifier" -H "X-Auth-Email: $auth_email" -H "X-Auth-Key: $auth_key" -H "Content-Type: application/json" --data "{\"id\":\"$zone_identifier\",\"type\":\"A\",\"name\":\"$record_name\",\"content\":\"$ip\"}") | |
| if [[ $update == *"\"success\":false"* ]]; then | |
| log "API UPDATE FAILED. DUMPING RESULTS:" | |
| log "$update" | |
| echo "API UPDATE FAILED. DUMPING RESULTS:" | |
| echo "$update" | |
| exit 1 | |
| else | |
| echo "$ip" > $ip_file | |
| log "IP changed to: $ip" | |
| echo "IP changed to: $ip" | |
| fi |
When I run it in busybox under router. Some errors happen below:
API UPDATE FAILED. DUMPING RESULTS:
paste cloudflare.log content here
[Mon Jul 15 02:04:25 CST 2019] - Check Initiated
[Mon Jul 15 02:04:26 CST 2019] - API UPDATE FAILED. DUMPING RESULTS:
[Mon Jul 15 02:11:10 CST 2019] - Check Initiated
[Mon Jul 15 02:11:11 CST 2019] - API UPDATE FAILED. DUMPING RESULTS:
[Mon Jul 15 02:22:20 CST 2019] - Check Initiated
[Mon Jul 15 02:22:22 CST 2019] - API UPDATE FAILED. DUMPING RESULTS:
rm cloudflare.ids, and replace 4-7 line to your own info.
How to run this correctly ? Im getting API UPDATE FAILED. DUMPING RESULTS:
{"success":false,"errors":[{"code":7001,"message":"Method PUT not available for that URI."}],"messages":[],"result":null}
command trying is ./cloudflare-update-record.sh and ./cloudflare-update-record.sh -ip=192.168.1.1
How to run this correctly ? Im getting API UPDATE FAILED. DUMPING RESULTS:
{"success":false,"errors":[{"code":7001,"message":"Method PUT not available for that URI."}],"messages":[],"result":null}command trying is ./cloudflare-update-record.sh and ./cloudflare-update-record.sh -ip=192.168.1.1
./cloudflare-update-record.sh works for me. And this scripts run without any args.
To debug it, run with
bash -x cloudflare-update-record.sh
Please update. I update for https://ctviet.com but error alert: API UPDATE FAILED. DUMPING RESULTS
Please update. I update for https://ctviet.com but error alert: API UPDATE FAILED. DUMPING RESULTS
Works for me. Please paste the next line after API UPDATE FAILED. DUMPING RESULTS
When I run it in busybox under router. Some errors happen below: