Python: Cloudflare DNS A-Record aktualisieren – Beispiel
English
Deutsch
Dieses Skript aktualisiert einen DNS A-Record (IPv4-Adresse) über die Cloudflare Python-API. Es setzt voraus, dass der A-Record bereits vorhanden ist.
Siehe auch Python Cloudflare DNS A record create or update example für eine Variante dieses Skripts, die den Record erstellt, falls er noch nicht existiert.
python-cloudflare-dns-a-record-update-example.py
#!/usr/bin/env python3
import CloudFlare
import argparse
import sys
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("-e", "--email", required=True, help="Die Cloudflare-Login-E-Mail-Adresse")
parser.add_argument("-n", "--hostname", required=True, help="Der zu aktualisierende Hostname, z.B. mydyndns.mydomain.com")
parser.add_argument("-k", "--api-key", required=True, help="Der zu verwendende Cloudflare globale API-Key. HINWEIS: Domänenspezifische API-Tokens funktionieren NICHT!")
parser.add_argument("-i", "--ip-address", required=True, help="Auf welche IP-Adresse der Record aktualisiert werden soll")
parser.add_argument("-t", "--ttl", default=60, type=int, help="Die TTL der Records in Sekunden (oder 1 für Auto)")
args = parser.parse_args()
# Cloudflare API-Client initialisieren
cf = CloudFlare.CloudFlare(
email=args.email,
token=args.api_key
)
# Zone-ID abrufen (für die Domain). Deshalb wird der API-Key benötigt und ein Domain-API-Token nicht ausreicht
zone = ".".join(args.hostname.split(".")[-2:]) # domain = test.mydomain.com => zone = mydomain.com
zones = cf.zones.get(params={"name": zone})
if len(zones) == 0:
print(f"Could not find CloudFlare zone {zone}, please check domain {args.hostname}")
sys.exit(2)
zone_id = zones[0]["id"]
# Bestehenden A-Record abrufen
a_record = cf.zones.dns_records.get(zone_id, params={"name": args.hostname, "type": "A"})[0]
# Record aktualisieren & in Cloudflare speichern
a_record["ttl"] = args.ttl # 1 == auto
a_record["content"] = args.ip_address
cf.zones.dns_records.put(zone_id, a_record["id"], data=a_record)Verwendungsbeispiel:
update_dns_usage_example.sh
./update-dns.py --api-key ... --email [email protected] --ttl 300 --ip 1.2.3.4 --hostname mysubdomain.domain.comCheck out similar posts by category:
Networking, Python
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow