https://github.com/lazaroblanc/ionos-dyndns
Script to automatically create or update A/AAAA DNS records for a host
https://github.com/lazaroblanc/ionos-dyndns
cron cronjob ddns ddns-script ddns-updater dns dns-record dns-record-updater dns-records dynamic-dns dyndns dyndns-updater ionos python
Last synced: 16 days ago
JSON representation
Script to automatically create or update A/AAAA DNS records for a host
- Host: GitHub
- URL: https://github.com/lazaroblanc/ionos-dyndns
- Owner: lazaroblanc
- License: apache-2.0
- Created: 2021-05-12T20:38:52.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2024-03-31T12:16:11.000Z (about 1 year ago)
- Last Synced: 2025-04-06T04:58:07.306Z (22 days ago)
- Topics: cron, cronjob, ddns, ddns-script, ddns-updater, dns, dns-record, dns-record-updater, dns-records, dynamic-dns, dyndns, dyndns-updater, ionos, python
- Language: Python
- Homepage:
- Size: 14.6 KB
- Stars: 23
- Watchers: 4
- Forks: 6
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 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` commandBy 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 keyYou 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:
1. Download the script and make sure it is executable
```sh
wget https://raw.githubusercontent.com/lazaroblanc/IONOS-DynDNS/main/ionos_dyndns.py
chmod +x ionos_dyndns.py
```
2. Open your crontab file with `crontab -e`
3. Paste this line:
```sh
*/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-secretCreate 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!
📃 License
Published under the Apache License 2.0
Please see the License for details