Curl コマンドのどこが間違っているのでしょうか?

Curl コマンドのどこが間違っているのでしょうか?

次のような結果になります:

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'
  1. 変数を定義しExecStartて実行しようとしています--header。構文は次のようになります。

    foo=bar some_command option1 option2
    
  2. フルパス を使用しています/usr/bin/curl。それが正しいことがわかっていて、フルパスが必要な場合を除き、 に頼って$PATHだけを使用する必要がありますcurl

  3. の後にスペースがありませんcurl

  4. curlroot として実行しようとしています。

  5. コマンドを実行しています (インターネットからのランダム コードなど)あなたはどうやら理解していないようだルートとして

修正するには:

  • 「理解できないコマンドは 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'

関連情報