export AWS_PROFILE=default DOMAIN="pfy.ch" declare -a SUB_DOMAINS=("home" "git" "zip") # Scripts CURRENT_IP=`dig @resolver4.opendns.com myip.opendns.com +short` HOSTED_ZONE_ID=$( /usr/local/bin/aws route53 list-hosted-zones \ | /usr/local/bin/jq \ --arg domain "$DOMAIN." \ '.HostedZones | map(select(.Name == $domain)) | .[] .Id' \ | sed 's/"//g' ) for SUB_DOMAIN in "${SUB_DOMAINS[@]}" do RECORD_VALUE=$( /usr/local/bin/aws route53 list-resource-record-sets \ --hosted-zone-id $HOSTED_ZONE_ID \ | /usr/local/bin/jq \ --arg fullDomain "$SUB_DOMAIN.$DOMAIN." \ '.ResourceRecordSets | map(select(.Name == $fullDomain)) | .[] .ResourceRecords | .[] .Value' \ | sed 's/"//g' ) if test "$CURRENT_IP" != "$RECORD_VALUE"; then CHANGE_REQUEST=" { \"HostedZoneId\": \"$HOSTED_ZONE_ID\", \"ChangeBatch\": { \"Comment\": \"Dynamic DNS change\", \"Changes\": [ { \"Action\": \"UPSERT\", \"ResourceRecordSet\": { \"Name\": \"$SUB_DOMAIN.$DOMAIN\", \"Type\": \"A\", \"TTL\": 3600, \"ResourceRecords\": [ { \"Value\": \"$CURRENT_IP\" } ] } } ] } } " echo "$CURRENT_IP does not match $RECORD_VALUE on $SUB_DOMAIN.$DOMAIN. Changing..."; /usr/local/bin/aws route53 change-resource-record-sets --hosted-zone-id $HOSTED_ZONE_ID --cli-input-json "$CHANGE_REQUEST" /Users/noahheague/.config/scripts/webhook.sh \ -c "dns" \ -m "$CURRENT_IP does not match $RECORD_VALUE on $SUB_DOMAIN.$DOMAIN" else echo "$CURRENT_IP matches $RECORD_VALUE on $SUBDOMAIN.$DOMAIN." fi done