Ich bekomme:
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
Antwort1
was mache ich falsch?
ExecStart=/usr/bin/curl'https://dynupdate.no-ip.com/nic/update' --header "Authorization: Basic <$xxxx:$xxx>" -d 'hostname=<hostname>.xxxx.ddns.net'
Sie definieren
ExecStart
eine Variable und versuchen, sie auszuführen--header
. Die Syntax lautet wie folgt:foo=bar some_command option1 option2
Sie verwenden den vollständigen Pfad
/usr/bin/curl
. Sofern Sie nicht wissen, dass er richtig ist und Sie den vollständigen Pfad benötigen, sollten Sie sich auf Ihren verlassen$PATH
und nur verwendencurl
.Danach ist kein Platz mehr frei
curl
.Sie versuchen,
curl
als Root zu arbeiten.Sie führen einen Befehl aus (wie etwa zufälligen Code aus dem Internet?)du verstehst anscheinend nichtals root.
Reparieren:
- Schreiben Sie 100 Mal „Ich werde keine Befehle ausführen, die ich nicht als Root verstehe“. :)
- Drop
ExecStart=
, es ist ein Teil der systemd-Syntax. - Verwenden Sie einfach
curl
. - Setzen Sie nach ein Leerzeichen
curl
.
Es wird sein wie
curl 'https://dynupdate.no-ip.com/nic/update' --header "Authorization: Basic <$xxxx:$xxx>" -d 'hostname=<hostname>.xxxx.ddns.net'
wobei <$xxxx:$xxx>
und <hostname>
immer noch Platzhalter sind, die Sie in etwas Gültiges ändern müssen.
Antwort2
Wenn Sie dies über die Befehlszeile und nicht über ausführen möchten systemd
, müssen Sie es folgendermaßen ausführen:
curl 'https://dynupdate.no-ip.com/nic/update' --header "Authorization: Basic <$xxxx:$xxx>" -d 'hostname=<hostname>.xxxx.ddns.net'