Add ddns script
This commit is contained in:
Executable
+44
@@ -0,0 +1,44 @@
|
||||
#!/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 "$@"
|
||||
Reference in New Issue
Block a user