-
-
Save dalhundal/89159b3f032588586e91 to your computer and use it in GitHub Desktop.
#!/bin/sh | |
# Shell script to update namecheap.com dynamic dns | |
# for a domain to your external IP address | |
HOSTNAME=yoursubdomain | |
DOMAIN=yourdomainname.com | |
PASSWORD=y0urp455w0rd | |
IP=`curl -s echoip.com` | |
curl "https://dynamicdns.park-your-domain.com/update?host=$HOSTNAME&domain=$DOMAIN&password=$PASSWORD&ip=$IP" |
This works fine if HOSTNAME has a value, like 'www'. That would update the DNS for www.yourdomain.com.
I tried setting HOSTNAME to '@' to update the base domain (yourdomain.com) but got an error. Then I tried setting it to '', also no good. How to set the DNS value of @?
Does this work? (I can't test it right now)
host=@
domain=your-own-domain.tld
password=your-own-password
response=$(curl -s "https://dynamicdns.park-your-domain.com/update?host=$host&domain=$domain&password=$password&ip=$ip")
echo $response
Here's namecheap's own documentation, unless I'm missing something we're updating using the described method:
One thing to double check, on your namecheap DNS you do have the @ record host type set to "A+ Dynamic DNS record" ?
If that's correct then I'd open a support case with namecheap.
According to this you should be using the "A+ Dynamic DNS record". Whilst it might work now with a regular "A record" there's a chance that functionality will be deprecated in the future YMMV.
Here's something that brings together several of the ideas above.
- Prevents clobbering the Namecheap update servers
- Only relies on core internet services from OpenDNS/dnsOmatic infrastructure (robust and purpose buit for ddns use cases)
- Will also discover AWS public DHCP IP addresses properly if you have a lot of internal RFC1918 DNS going on.
#!/bin/sh
# Shell script to update Namecheap.com dynamic dns
DDNS_HOSTNAME=hostname
DDNS_DOMAIN=example.com
DDNS_PASSWORD=XXXXXXXXXXX
CURRENT_IP=$(curl myip.dnsomatic.com)
CURRENT_DDNS=$(dig +short $DDNS_HOSTNAME.$DDNS_DOMAIN @resolver1.opendns.com)
echo "current Namecheap ddns record = $CURRENT_DDNS"
echo "current AWS public IP address = $CURRENT_IP"
if [ "$CURRENT_DDNS" != "$CURRENT_IP" ]; then
curl "https://dynamicdns.park-your-domain.com/update?
host=$DDNS_HOSTNAME&domain=$DDNS_DOMAIN&password=$DDNS_PASSWORD&ip=$CURRENT_IP"
fi
What the heck is park-your-domain.com and why would I send them my namecheap credentials? Is this a scam?
Thanks - I did search and didn't find any mention of park-your-domain.com in Namecheap's documentation. Why don't they use namecheap.com or api.namecheap.com as their API domain?
Minor change to only update the dynamic DNS record when required. Allows for frequent update checking without hammering the namecheap update API.