Facebook
Twitter
Google+
Kommentare
2

Dateien über die Kommandozeile hochladen (Formular)

Ich schaue mir gerade die Überschrift an. Ganz schön lang. Aber das soll mich jetzt erstmal nicht beschäftigen… Heute geht es darum, über ein Bash-Script PEAR-Pakete zu generieren und automatisch dem Chiara-PEAR-Channel zur Verfügung zu stellen. Wer Chiara kennt, weiß , dass man über ein WebInterface (sehr komfortabel) Pakete hinzufügen kann. Heißt: Nach Authentifizierung über Username/Passwort mit Setzen des des Session-Cookies kann man über ein Formular neue Releases eines Paketes dem Channel hinzufügen. Der Artikel soll aber allgemein erklären wie man Uploads über die Kommandozeile hinbekommt.

Das soll automatisiert werden.

Authentifizierung (Für das Chiara-Login):

curl -d "login=Submit&password=<password>&user=<channeluser>" --cookie-jar /tmp/cookieCurl -s http://<domain des Chiara-Web-Frontends>/index.php > /dev/null;

Danach liegt dann in /tmp/cookieCurl der Sessioncookie vor. Den will ich dann natürlich gleich nutzen und merk‘ mir den Pfad zum Cookie (ist nicht sooo schwer).

Fileupload (fertiges PEAR-Paket):

Ich habe mir mit Firebug angeschaut, welche Parameter das Backend erwartet und sie versucht über wget die Parameter und das File an den Channel zu senden. Das geht leider nicht so einfach, weil wget die Header nicht richtig setzt. Daraufhin fiel einem Kollegen ein, dass es ja noch curl für die Kommandozeile gibt und dass man in PHP mit curl sehr schön und einfach Dateien irgendwohin senden kann. Mit der These: „Mit Curl geht das bestimmt!“ haben wir also mit curl probiert die Datei hochzuladen. Dabei war das web natürlich hilfreich. Allerdings war der erste Ansatz ohne Erfolg, da alle Parameter des Formulars mit in den POST-Body müssen. Die Lösung ist also (für Chiara-Webfrontend-Paket-Upload):

curl -F release=@<path to file> -F submitted=1 -F f=0 -F filename=<filename> --cookie /tmp/cookieCurl http://<domain des Chiara-Web-Frontends>/index.php > /tmp/uploadCheck;

Jetzt kann man im Ergebnis(HTML) noch nach „Success“ oder „Failure“ grepen und eine Statusmeldung ausgeben und der Upload ist geschehen. Ich hoffe es hilft jemandem mit ähnlichen Problemen. Auch ind eisem Fall gibt es wahrscheinlich viele Wege, die nach Rom führen, aber dies war meiner. Wenn ihr eure eigenen habt, dann lasst und doch daran teilhaben.

Über den Autor

Mike Lohmann

Mike Lohmann arbeitet zur Zeit als Software Architekt beim Verlag Gruner+Jahr AG & Co KG. Er arbeitet seit 1998 im IT-Bereich und seit 2000 im Bereich Webentwicklung.
Kommentare

2 Comments

  1. Interessanter Artikel, auch wenn ich ihn beispielsweise momentan nicht wirklich benötigen kann.

    Aber den Rechtschreibfehler im Titel kann man noch ausbessern. Kommandozeilean >> Kommandozeile 😉

    Reply

Leave a Comment.

Link erfolgreich vorgeschlagen.

Vielen Dank, dass du einen Link vorgeschlagen hast. Wir werden ihn sobald wie möglich prüfen. Schließen