Я получил:
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». :)
- Отбросьте
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'