DDUPDATE(8)
π DDUPDATE(8) π
okay bestie, sit DOWN, because today we're talking about ddupdate β it's a System Administration Utilities girlie from section 8 of the manual, and she is literally here to keep your dynamic IP looking cute under a fixed name. β¨
πΈ NAME πΈ
ddupdate β update DNS data for dynamic IP addresses. that's it, that's the whole job, and she does it flawlessly. π
π SYNOPSIS π
ddupdate [options]
π¦ DESCRIPTION π¦
so picture this: your IP address is a little chaos gremlin that keeps changing on you, usually because DHCP handed you something new. ddupdate is the tool that takes that ever-shifting address and tells a dynamic DNS service provider about it β think changeip.com, duckdns.org, or no-ip.com. the whole point? you get to reach your machine at a fixed name like myhost.duckdns.org even when the IP underneath it changes. iconic behaviour, honestly. π
she's built on a plugin structure, which is very main-character of her. there are plugins for getting the actual address (usually hardware-dependent) and separate plugins for updating it (service-dependent). two different jobs, two different plugin types, no cap.
the normal usecase is that you shove all your commandline options into the config file so you don't have to type them every time. BUT β and this is the fun part β every single option in that file can be overridden by an actual command line option, like when you're testing something. bestie said "config file for the everyday, flags for the experiments." π
using service providers (and possibly firewalls too) means you need username/password credentials. for those, ddupdate uses either netrc(5) or the system keyring. pick your fighter. π«Ά
ddupdate ships with systemd support so it can run at regular intervals, plus NetworkManager templates that fire when an interface goes up or down. she fully supports ipv6 addresses AND proxies (peep the ENVIRONMENT section for that one, iykyk). β¨
β¨ OPTIONS β¨
the everyday girlies β usually set in the config file π
-H,--hostname<hostname> β the hostname you wanna update, typically fully qualified. defaults to the truly unusablehost.nowhere.net(she's a placeholder, not a personality, bestie π).-s,--service-plugin<plugin> β the plugin that pushes your DNS data to the provider, using the address it got from the address-plugin. defaults todry-run, which literally just prints the address. want the menu? run--list-services. π-a,--address-plugin<plugin> β the plugin that goes and finds your actual IP address. defaults todefault-if, which figures out your default interface using/usr/sbin/ipand takes its primary address. run--list-addressersto see all the options. π¦-C,--auth-plugin<plugin> β the plugin that supplies your authentication credentials. eithernetrcorkeyring. π-v,--ip-version<v4|v6|all> β which kind of IP addresses to register. the address-plugin might hand back v6, v4, or both β but what actually gets sent to the service plugin is filtered through this option. so like, an unused ipv6 address doesn't accidentally become an official address for your host. defaults tov4. π-L,--loglevel[level] β how much logging you want.levelis a symbolic syslog level:error,warning,info, ordebug. defaults towarning. (yes there's a space in that list, that's just how the manpage wrote it, don't @ me π«Ά)-o,--service-option<plugin option> β an option that gets interpreted by the service plugin, documented in--help <plugin>. give it as many times as you need. β οΈ heads up: any option on the command line will clear the list of options from the config file β so it's not additive, bestie. see PLUGIN OPTIONS. π-O,--address-option<plugin option> β same deal but for the address-plugin. see--service-optionand PLUGIN OPTIONS. π
other options π
-c,--config-file<path> β the file holding default values for all the command line options. the path must be absolute. an example file ships with the sources. see [FILES] below. π-f,--forceβ force ddupdate to run even if the cached value is still valid. she said "I don't care if it's fresh, I'm running it anyway." π₯-e,--execute-section<section> β only run the given section in the configuration file. use--list-sectionsto see what's available. π-h,--help[plugin] β print help. if you hand her a plugin argument, she prints help for that specific plugin. π«Ά-S,--list-servicesβ list the service provider plugins. π§-A,--list-addressersβ list plugins that provide one or more IP addresses. πΈ-P,--list-auth-pluginsβ list plugins for storing credentials, likenetrcandkeyring. π-E,--list-sectionsβ list the available sections in the configuration file. ποΈ-V,--versionβ print the ddupdate version. β
π PLUGIN OPTIONS π
so these plugin options are, generally speaking, just yeeted straight to the plugins with zero further interpretation from ddupdate. no vibes check, no processing, just handed over. π«Ά
an option is either a single keyword or a key=value string. and β οΈ no whitespace is allowed in either the key or the value β not even a little, bestie. keep it tight. π
π§ PLUGIN LOADING π§
ddupdate goes looking for a directory named plugins and tries to load plugins from all the files in that directory. the search happens in descending priority, so here's the ranking, bestie:
- The directory
pluginsin the same directory as themain.pymodule. this is the development case, and it has the highest priority. π - User plugins get searched in
~/.local/share/ddupdate/plugins. setting theXDG_DATA_HOMEenvironment variable relocates this to$XDG_DATA_HOME/ddupdate/plugins. π - The directories listed in the
XDG_DATA_DIRSenvironment variable β by default/usr/local/share:/usr/shareβ get searched forddupdate/plugins. π¦
π EXAMPLES π
okay quick note before we dive in: the command line options are normally stored in ~/.config/ddupdate.conf, which means you can just run her with no command line options at all. queen of convenience. π
Update on dyndns.com using the external address as seen from the internet, displaying the address used:
ddupdate -a default-web-ip -s dtdns.com -H myhost.dyndns.org -l info
Make a debug run without actually updating, displaying the address on the local, default interface:
ddupdate -a default-if -s dry-run --loglevel info -H host.dyndns.org
πΈ ENVIRONMENT πΈ
ddupdate respects the data paths defined by freedesktop.org. very mindful, very demure. π
XDG_CACHE_HOMEβ locates the cached addresses files. see FILES. ποΈXDG_DATA_HOMEβ locates user plugins. see PLUGIN LOADING. π§XDG_DATA_DIRSβ involved in system plugins, see PLUGIN LOADING. π¦XDG_CONFIG_HOMEβ the parent directory location for the user configuration file, defaults to~/.config. π
ddupdate also accepts the standard proxy environment:
http_proxy,https_proxyβ the URL to the proxies used for http and https connections. the distributed systemd service files have provisions to define these as required. π
π FILES π
~/.netrcβ when you're configured with thenetrcauthentication backend, this file stores the username and password for logging in to service providers. seenetrc(5)for the format used. β οΈ the file must have restricted permissions like600to be accepted β she will NOT be letting that slide, bestie./etc/netrcβ fallback location for credentials when~/.netrcisn't found. π¨ the use of this file is deprecated.~/.config/ddupdate.confβ default config file location. if it's defined, theXDG_CONFIG_HOMEvariable relocates this to$XDG_CONFIG_HOME/ddupdate.conf. π/etc/ddupdate.confβ fallback configuration file location. ποΈ/usr/share/ddupdate/pluginsβ default directory for upstream plugins, see PLUGIN LOADING. β¬οΈ/usr/local/share/ddupdate/pluginsβ default directory for site plugins, see PLUGIN LOADING. π~/.local/share/ddupdate/pluginsβ default directory for user plugins, see PLUGIN LOADING. π«Ά~/.cache/ddupdate/*β the cached address from the last update that had an actual change, one for each update service. setting theXDG_CACHE_HOMEenvironment variable relocates these files to$XDG_CACHE_HOME/ddupdate/*. ποΈ
β SEE ALSO β
ddupdate.conf(5)β Configuration file πddupdate-config(8)β Configuration tool π οΈnetrc(5)β Authentication tokens file, originally used byftp(1), used by thenetrcauthentication backend πhttps://pypi.org/project/keyring/β Interface for the keyring authentication backend πhttps://github.com/leamas/ddupdateβ Project homesite and README π
and that's the whole page, bestie!! π this one's a ddupdate special, last changed Apr 2022, and she's repping DDUPDATE(8) β go forth and keep those dynamic addresses looking immaculate. mwah π«Άπβ¨
π¦ where this page comes from
- debian trixie: ddupdate 0.7.2-1 Β· MIT
- ubuntu questing: ddupdate 0.7.2-1
- ubuntu resolute: ddupdate 0.7.2-1build1 Β· MIT
- ubuntu stonking: ddupdate 0.7.2-1build1 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms