![]() This commit addresses an issue where the script was expecting the domain to include the "www" prefix for proper zone identification. The regex in get_domain_from_fqdn has been modified to make the subdomain part optional, allowing it to handle both domains with "www" and root domains without "www". These changes were necessary to ensure the script works seamlessly with both www and root domains, providing more flexibility in DNS record handling. Testing has been performed, and the script now successfully identifies and updates DNS records for domains with or without the "www" prefix. |
||
---|---|---|
ionos_dyndns.py | ||
LICENSE | ||
README.md |
ionos_dyndns.py
Create and update DNS records for a host using IONOS' API for use as a DynDNS (for example via a cronjob). The script will create A and/or AAAA records if none already exists for the host and update existing ones to reflect the new public IP.
The public IP-Address is determined in two ways:
- IPv4: uses the ipify.org API
- IPv6: uses the
ip address show
command
By default the name of the A/AAAA record that will be created/updated is one that matches the output from the command hostname -f
.
Update your /etc/hosts
file with your FQDN if it's not already there.
Alternatively you can override this default value by using the -H
or --fqdn
parameter.
Requirements
- Linux
- Python 3
- IONOS API key
You can create an API key here: https://developer.hosting.ionos.de/keys
The API is still in Beta and not enabled by default. In my case I had to call the customer support hotline and request to be enabled for the API.
Usage
Cronjob
This example shows how to update the AAAA record every 5 minutes and save the script output to a file:
- Download the script and make sure it is executable
wget https://raw.githubusercontent.com/lazaroblanc/IONOS-DynDNS/main/ionos_dyndns.py
chmod +x ionos_dyndns.py
- Open your crontab file with
crontab -e
- Paste this line:
*/5 * * * * ./ionos_dyndns.py --AAAA --api-prefix $publicprefix --api-secret $secret >> ionos_dyndns.log
General
usage: ionos_dyndns.py [-h] [-4] [-6] [-i] [-H] --api-prefix --api-secret
Create and update DNS records for this host using IONOS' API to use as a sort of DynDNS (for example via a cronjob).
optional arguments:
-h, --help show this help message and exit
-4, --A Create/Update A record
-6, --AAAA Create/Update AAAA record
-i , --interface Interface name for determining the public IPv6 address (Default: eth0)
-H , --fqdn Host's FQDN (Default: hostname -f)
--api-prefix API key publicprefix
--api-secret API key secret
Ideas / To-do
- improve log messages (add a timestamp)
- refactor duplicate code (~ line 94)
🐛 Bug reports & Feature requests 🆕If you've found a bug or want to request a new feature please open a new Issue |
|
🤝 Contributing✅ Pull requests are welcome! |
📃 LicensePublished under the Apache License 2.0Please see the License for details |