Dynamic DNS with v2 API (Bash script, using Curl in Ubuntu)

August 21, 2014 3.4k views

Using the following Bash snippet (with variables defined outside of this block) I am not able to update a dns record.

echo content="$(curl -H "Authorization: Bearer $api_key" -H "Content-Type: application/json" \
                 -d '{"type": "A", "name": "'"$record_id"'", "data": "'"$ip"'"}' \
                 -X POST "https://api.digitalocean.com/v2/domains/$domain_id/records/$record_id")"

If I remove $record_id from the URL, it just creates a new record. If I use the A entry name/subdomain "home" in my case, it says record not found, same if I try the numeric ID for the record.

How should I modify this call to properly update the IP of a DNS record?

This is based off the script here (in latest comment from author):


When I run it (as posted on github), it just creates a new record every time, not an update.

1 Answer

FYI This was solved, I added a fix to the github comment thread.

The issue was changing POST to PUT, and specifying the numeric record_id in the curl URL.

Have another answer? Share your knowledge.