我得到:
root@dm820:~# ExecStart=/usr/bin/curl'https://dynupdate.no-ip.com/nic/update' --header "Authorization: Basic <$xxxx:$xxx>" -d 'hostname=<hostname>.xxxx.ddns.net'
-sh: --header: command not found
答案1
我做错什么了?
ExecStart=/usr/bin/curl'https://dynupdate.no-ip.com/nic/update' --header "Authorization: Basic <$xxxx:$xxx>" -d 'hostname=<hostname>.xxxx.ddns.net'
您正在定义
ExecStart
变量并尝试运行--header
。语法如下foo=bar some_command option1 option2
您正在使用完整路径
/usr/bin/curl
。除非您知道它是正确的,并且您需要完整路径,否则您应该依靠您的,$PATH
并且只使用curl
。之后没有空格
curl
。您正在尝试
curl
以 root 身份运行。您正在运行一个命令(比如来自互联网的随机代码?)你显然不明白以 root 身份。
修理:
- 写 100 次“我不会以 root 身份运行我不理解的命令”。:)
- Drop
ExecStart=
,它是 systemd 语法的一部分。 - 只使用
curl
。 - 后面加一个空格
curl
。
就像
curl 'https://dynupdate.no-ip.com/nic/update' --header "Authorization: Basic <$xxxx:$xxx>" -d 'hostname=<hostname>.xxxx.ddns.net'
其中<$xxxx:$xxx>
和<hostname>
仍然是占位符,您需要更改为有效的内容。
答案2
如果您想从命令行而不是从运行它systemd
,则必须像这样运行它:
curl 'https://dynupdate.no-ip.com/nic/update' --header "Authorization: Basic <$xxxx:$xxx>" -d 'hostname=<hostname>.xxxx.ddns.net'