#!/usr/bin/env bash set -e # Not needed but useful to know function aws_ip_check { aws route53 list-resource-record-sets --hosted-zone-id $HOSTED_ZONE_ID \ --query "ResourceRecordSets[?(Name == 'senders.io.' && Type == 'A')].ResourceRecords[0].Value | [0]" --output text } if [ $# -lt 1 ]; then echo "Usage: ./update.sh HOSTED_ZONE_ID DOMAIN ./update.sh CONFIG_FILE " exit 1 fi if [ $# -eq 1 ]; then source $1 fi if [ $# -eq 2 ]; then HOSTED_ZONE_ID=$1 DOMAIN=$2 fi RECORD_CHANGE_JSON=/tmp/aws-ip-update.json # Fetch IPs config_ip=$(dig +short $DOMAIN) actual_ip=$(curl -s https://ipinfo.io/ip) if [ "$config_ip" != "$actual_ip" ]; then echo "Updating IP from $config_id to $actual_ip for $DOMAIN" cat < $RECORD_CHANGE_JSON { "Changes": [ "Action": "UPSERT", "ResourceRecordSet": { "Name": "$DOMAIN", "Type": "A", "TTL": 300, "ResourceRecords": [ "Value": "$actual_ip" ] } ] } EOF aws route53 change-resource-record-sets --hosted-zone-id $HOSTED_ZONE_ID \ --change-batch $RECORD_CHANGE_JSON else echo "$DOMAIN is currently registered properly: $config_ip $actual_ip" fi exit 0