staging.inyokaproject.org

curl - Nur mit manueller Eingabe des PW möglich

Status: Gelöst | Ubuntu-Version: Server 20.04 (Focal Fossa)
Antworten |

matsch95

Anmeldungsdatum:
14. April 2014

Beiträge: 11

Guten Tag,

ich versuche mittels curl eine JSON-Datei von einem anderen Server herunterzuladen. Dafür muss ich mich mittels User und Passwort authentifizieren. Wenn ich das Passwort als Parameter mitschicke, wird nichts heruntergeladen. Wenn ich das Passwort manuell eingebe wird das File geladen. Ich habe schon wget probiert, wie auch eine Parameterübergabe mit "anderem Header" direkt beim Aufruf. Da ich den Befehl gerne als Cron laufen lassen würde ist die manuelle Eingabe eher ausgeschlossen.

Lädt nichts herunter und erzeugt lediglich die leere Datei:

1
curl -o file.json -u USER:PASSWORD https://url/api/file

Funktioniert garnicht erst (auch nicht mit User, Password)

1
curl -X POST -F 'Benutzername="USER"' -F 'Kennwort="PASSWORD"' "https://url/api/file"

Lädt die Datei herunter, PW muss allerdings manuell eingeben werden:

1
2
curl -o file.json -u USER https://url/api/file
Enter host password for user 'USER':

Vielen Dank schonmal für die Hilfe!

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17630

Dafür gibt es ein Programm, um solche interaktiv gedachten Logins (und andere Prozeduren) zu automatisieren, das ein wenig spröde ist, namens

1
expect

Die genaue Bedienung musst Du Dir erarbeiten. Ich habe es nur kurz mal vor > 15 Jahren benutzt und seither noch 2-3 Mal anderen empfohlen, die dann zufrieden damit waren und Erfolg vermeldeten. Wenn das keine Genies waren, dann ist es wohl nicht so schwer.

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11278

Hast du die API-Beschreibung? Ist das wirklich ein GET-Request mit basic HTTP-Authentication oder ein POST Request, der "Benutzername" und "Kennwort" als Formular-Daten enthält?

sh4711

Anmeldungsdatum:
13. Februar 2011

Beiträge: 1201

matsch95 schrieb:

... Funktioniert garnicht erst (auch nicht mit User, Password)

1
curl -X POST -F 'Benutzername="USER"' -F 'Kennwort="PASSWORD"' "https://url/api/file"

...

Wie seahawk1986 schon fragte:

Das heißt, wenn du im Webbrowser https://url/api/file lädst kommt ein Web-Formular mit den Feldern Benutzername und Kennwort? Die Felder besitzen auch deutsche Namen?

Wenn du Einfluss auf das Kennwort hast versuche dieses mal zu vereinfachen ggf. gibt es beim Kennwort "quoting"-Probleme d.h. im Kennwort sind Sonderzeichen die interpretiert werden. In dem von dir oben genannten Beispiel müssen da die " bei USER und PASSWORD sein?

Im folgenden Link sind sehr viele verschiedene Möglichkeiten beschrieben Benutzername und Kennwort zu übergeben. Auch das Thema Sicherheit wird behandelt:

https://stackoverflow.com/questions/2594880/using-curl-with-a-username-and-password

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9837

matsch95 schrieb:

[…]

1
2
curl -o file.json -u USER https://url/api/file
Enter host password for user 'USER':

Wenn curl etwas von stdin lesen will, dann gib's ihm doch einfach:

Im Skript:

echo "$passwort" | curl -o file.json -u USER https://url/api/file 

Natürlich musst Du vorher Dein Passwort in die Variable laden.

Oder Dein Skript so aufrufen:

echo Rumpelstielz | DEIN_SKRIPT 

matsch95

(Themenstarter)

Anmeldungsdatum:
14. April 2014

Beiträge: 11

Vielen Dank für die Rückmeldungen!

Das Problem lag in einem "§"-Zeichen welches sich im Passwort befand und "escaped" werden musste. Nun funktioniert der Download einwandfrei.. Manchmal ist es so "einfach".

Viele Grüße

Antworten |