我得到:
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 身分執行。您正在運行命令(例如來自互聯網的隨機代碼?)你顯然不明白作為根用戶。
修理:
- 寫 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'