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
2 ответа
что я делаю не так?
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".:)
- Капля
ExecStart=
это часть системного синтаксиса. - Используйте только
curl
, - Поставить пробел после
curl
,
Это будет как
curl 'https://dynupdate.no-ip.com/nic/update' --header "Authorization: Basic <$xxxx:$xxx>" -d 'hostname=<hostname>.xxxx.ddns.net'
где <$xxxx:$xxx>
а также <hostname>
все еще заполнители, которые вы должны изменить на что-то действительное.
Если вы хотите запустить это из командной строки, а не из systemd
, вы должны запустить его так:
curl 'https://dynupdate.no-ip.com/nic/update' --header "Authorization: Basic <$xxxx:$xxx>" -d 'hostname=<hostname>.xxxx.ddns.net'