44 lines
885 B
Bash
44 lines
885 B
Bash
#!/usr/bin/env bash
|
|||
|
|
|
||
|
|
readonly HZ="${AWS_HOSTED_ZONE}"
|
||
|
|
readonly DOMAIN="${HOSTNAME}"
|
||
|
|
|
||
|
|
err() {
|
||
|
|
echo "[$(date -u +'%Y-%m-%dT%H:%M:%S%:z')]: $*" >&2
|
||
|
|
}
|
||
|
|
|
||
|
|
main() {
|
||
|
|
if ! [[ -x "$(command -v aws)" ]]; then
|
||
|
|
err "aws cli not installed"; exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Get the IP address.
|
||
|
|
ip="$(dig -4 +short myip.opendns.com @resolver1.opendns.com)"
|
||
|
|
if [[ -z "${ip}" ]]; then
|
||
|
|
err "failed to get ip address"; exit 2
|
||
|
|
fi
|
||
|
|
printf "ip: %s\n" "${ip}"
|
||
|
|
|
||
|
|
# Update the domains.
|
||
|
|
update='{
|
||
|
|
"Comment": "DDNS",
|
||
|
|
"Changes": [
|
||
|
|
{
|
||
|
|
"Action": "UPSERT",
|
||
|
|
"ResourceRecordSet": {
|
||
|
|
"Name": "'"${DOMAIN}"'",
|
||
|
|
"Type": "A",
|
||
|
|
"TTL": 300,
|
||
|
|
"ResourceRecords": [{ "Value": "'"${ip}"'" }]
|
||
|
|
}
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}'
|
||
|
|
|
||
|
|
printf "requesting update for %s\n" "${DOMAIN}"
|
||
|
|
aws route53 change-resource-record-sets \
|
||
|
|
--hosted-zone-id "${HZ}" \
|
||
|
|
--change-batch "${update}"
|
||
|
|
}
|
||
|
|
|
||
|
|
main "$@"
|