Ddns warning in 19.07


I upgrade my router to 19.07 and install ddns package, this is what I get after the installation:

~# /usr/lib/ddns/dynamic_dns_updater.sh: eval: line 1: syntax error: unexpected "("

This is the content of the file "/usr/lib/ddns/dynamic_dns_updater.sh": https://paste.debian.net/1126360/

Is this a bug in the package?

Thanks for your help.

Kind regards.

No bug. I have multiple instances of DDNS running on 19.07.0. It's working; and hence the updater script is OK. (It would be nice for others to confirm, though.)

Perhaps there's a bad character in your DDNS config file?

This might be a shell issue? The first line in the script points to /bin/sh, so it should be using that shell (which is really a symlink to /bin/busybox).

Someone could test this command? /bin/sh /usr/lib/ddns/dynamic_dns_updater.sh start

This is my output:

# /bin/sh /usr/lib/ddns/dynamic_dns_updater.sh start
root@Router:~# /usr/lib/ddns/dynamic_dns_updater.sh: eval: line 1: syntax error: unexpected "("


On 19.07 on Shelby and I see the same result. I'm using arfraid.org and freedns scripts.

In bash I'd add "export set -x" for more output, but ash doesn't support the export command?

I had this same error after upgrading to 19.07.1 and fixed it by reinstalling the ca-certificates bundle package. I've no idea why the missing ca-certificates file caused this syntax error :thinking:

I ran into the same issue.

TL;DR: opkg install hostip solved it.

The bit more verbose explanation is, that /usr/lib/ddns/dynamic_dns_functions.sh probes a list of tools to do the DNS lookup. The last resort is busybox' builtin nslookup – which does not support IPv6. In case use_ipv6 is set to true the script tries to print a warning message about this, but a badly escaped bracket then leads to that error.

The second-last resort that gets probed is hostip which does support IPv6 and therefore is the best option for my setup anyway: I have an IPv6-only DDNS setup. I guess with an IPv4-only setup one does not run into this error.

I'll try to fix the script and/or the package's dependencies, but it might take a while.