Created
September 19, 2021 06:24
-
-
Save StealthBadger747/5ec435bd2506abe75cc26770e9bc58ce to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# This script is used to check and update your GoDaddy DNS server to the IP address of your current internet connection. | |
# This differs from the one mcarpenterjr created because you can update multiple A Records. | |
# Special thanks to mcarpenterjr for his derivative of mfox's ddns powershell script | |
# https://gist.github.com/mcarpenterjr/1dedf9f9f842710ba5f07937ef4f5ae4 | |
# Special thanks to mfox for his ps script | |
# https://github.com/markafox/GoDaddy_Powershell_DDNS | |
# | |
# First go to GoDaddy developer site to create a developer account and get your key and secret | |
# | |
# https://developer.godaddy.com/getstarted | |
# Be aware that there are 2 types of key and secret - one for the test server and one for the production server | |
# Get a key and secret for the production server | |
# | |
#Update the first 4 variables with your information | |
domain="" # your domain | |
key="" # key for godaddy developer API | |
secret="" # secret for godaddy developer API | |
headers="Authorization: sso-key $key:$secret" | |
# Declare which A records to update here: | |
declare -a ARecordArray=("@" "@" "@" "@") | |
# Iterate the string array using for loop | |
for name in ${ARecordArray[@]}; do | |
result=$(curl -s -X GET -H "$headers" \ | |
"https://api.godaddy.com/v1/domains/$domain/records/A/$name") | |
dnsIp=$(echo $result | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b") | |
# echo "dnsIp:" $dnsIp | |
# Get public ip address there are several websites that can do this. | |
ret=$(curl -s GET "http://ipinfo.io/json") | |
currentIp=$(echo $ret | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b") | |
# echo "currentIp:" $currentIp | |
if [ "dnsIp" != $currentIp ]; | |
then | |
# echo "Ips are not equal" | |
request='[{"data":"'$currentIp'","ttl":3600}]' | |
# echo $request | |
nresult=$(curl -i -s -X PUT \ | |
-H "$headers" \ | |
-H "Content-Type: application/json" \ | |
-d $request "https://api.godaddy.com/v1/domains/$domain/records/A/$name") | |
# echo $nresult | |
fi | |
done |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment