Automatisches Update eines DNS Records
Quelle der Code-Beispiele: https://dns.hetzner.com/api-docs#tag/Records
Beispieldaten:
ID = ID123456789
NAME = test
TEMP_IP = 10.0.0.1
CURRENT_IP = 10.0.0.1
ZONE_ID = ZONEID123456789
API_TOKEN = 7tgu7f86uf765tri7g786gi7gi7g
In der ZONE file einen Eintrag für eine Subdomain erstellen. NAME durch die Bezeichnung der Subdomain ersetzen, z. B. test von der Subdomain test.metal.zone.
NAME 0 IN A TEMP_IP
API_TOKEN erstellen
- In der Hetzner Cloud anmelden und in den DNS Bereich wechseln.
- Dort im Menü unter API Tokens ein neues Token erstellen und abspeichern
Abrufen aller Zonen, um die ID zu identifizieren. API_TOKEN durch das zuvor erhaltene Token ersetzen!
curl "https://dns.hetzner.com/api/v1/records" -H 'Auth-API-Token: API_TOKEN'
Die Liste wird ungefähr wie folgt aussehen.
{
"records": [
{
"id": "ID",
"type": "A",
"name": "NAME",
"value": "CURRENT_IP",
"zone_id": "ZONE_ID",
"created": "2020-04-07 01:25:08 +0000 UTC",
"modified": "2020-04-07 01:25:08 +0000 UTC"
},
...
]
}
Die ID und ZONE_ID merken.
Eine Datei mit dem Namen update_dns.sh anlegen und den angepassen Inhalt einfügen.
Die Werte ID, API_TOKEN, NAME und ZONE_ID müssen ersetzt werden!
#!/bin/bash
CUR_IP="$(dig +short myip.opendns.com @resolver1.opendns.com)"
curl -X "PUT" "https://dns.hetzner.com/api/v1/records/ID" \
-H 'Content-Type: application/json' \
-H 'Auth-API-Token: API_TOKEN' \
-d $'{
"value": "'${CUR_IP}'",
"ttl": 0,
"type": "A",
"name": "NAME",
"zone_id": "ZONE_ID"
}'
Das Script mit Ausführungsrechten versehen.
chmod +x update_dns.sh
Wenn das Script nun ausgeführt wird, aktualisiert es den DNS Eintrag mit der aktuellen öffentlichen IP (Internetadresse).
No Comments