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“ grep
en 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.
Interessanter Artikel, auch wenn ich ihn beispielsweise momentan nicht wirklich benötigen kann.
Aber den Rechtschreibfehler im Titel kann man noch ausbessern. Kommandozeilean >> Kommandozeile 😉
Danke. Ist erledigt. Ich muss noch dazusagen, dass der Artikel von Mike ist und ich die Überschrift umgeschrieben und verhunzt habe 😉