次のような結果になります:
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 回書いてください。:)
- ドロップします
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'