ubuntuusers.de

pastebin api - terminal: && $$ Operatoren

Status: Ungelöst | Ubuntu-Version: Ubuntu 11.04 (Natty Narwhal)
Antworten |

BlackHollow

Anmeldungsdatum:
28. Juli 2009

Beiträge: 199

Hey,

ich möchte über die API von pastebin.com nutzen, mit Hilfe des Terminals und bash.

folgendes Kommando

1
curl -s -d "paste_code=`cat test_file`"  http://pastebin.com/api_public.php; echo

funtkioniert, solange keine bestimmten Operatoren wie && oder $$ auftauchen.

Der Inhalt von test_file:

echo part1 && echo part2
echo part1 $$ echo part2

Ob man nun die den Inhalt direkt als Parameter übergibt:

1
curl -s -d "paste_code='echo part1 && echo part2'"  http://pastebin.com/api_public.php; echo

spielt keine Rolle, der Paste wird nach part 1 abgeschnitten...

Verwendet man übrigens pastebinit (in den repos) funktioniert es...

1
2
pastebinit -b http://pastebin.com/ test_file
echo 'echo part1 && echo part2' | pastebinit -b http://pastebin.com/

Hat jemand einen Rat?!

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17622

Wohnort: Berlin

Oben verwendest Du backticks, wo Du unten Apostrophe nutzt - ist Dir das bewusst?

1
curl -s -d "paste_code='echo part1 && echo part2'"  http://pastebin.com/api_public.php; echo

Generell gilt es Backticks zu vermeiden, und stattdessen $(...) zu verwenden (OMMM, OMMM).

1
curl -s -d "paste_code=$(echo part1 && echo part2)"  http://pastebin.com/api_public.php; echo

BlackHollow

(Themenstarter)

Anmeldungsdatum:
28. Juli 2009

Beiträge: 199

Das mit den Backticks und den Apostrophen war mir nicht aufgefallen... Und danke für den Hinweiß.

Ich denke, ich habe mich durch den angegebenen Inhalt "echo part1 && echo part2" nicht klar ausgedrückt.

Ich möchte den Inhalt von Dateien hochladen, und Operatoren wie && zerstören das Ergebnis. Hat beispielsweise eine Datei den Inhalt:

part1 || part2
part1 && part2

Ist das erhaltene Ergebnis von

1
curl -s -d "paste_code=$(cat test_file)"  http://pastebin.com/api_public.php; echo
part1 || part2
part1

http://pastebin.com/qMqkZ6Gz

Das Problem ist, dass bash scripts, die && enthalten and der Stelle abgeschnitten werden und nicht vollständig erscheinen.

Wenn ich noch einmal auf das vorherige Beispiel eingehe: Verwendet man

1
curl -s -d "paste_code='echo part1 && echo part2'"  http://pastebin.com/api_public.php; echo

ist die Ausgabe

'echo part1

http://pastebin.com/pDcDnr3t Verwendet man

1
curl -s -d "paste_code=$(echo part1 && echo part2)"  http://pastebin.com/api_public.php; echo

ist die Ausgabe:

part1
part2

http://pastebin.com/Ui2V7ZLg

Die Ausgabe soll aber

echo part1 && echo part2

sein.

Vain

Avatar von Vain

Anmeldungsdatum:
12. April 2008

Beiträge: 2510

Braucht man einen Account, um da was hochzuladen? Falls ja, könnte das bei dir funktionieren:

1
curl -s -F 'paste_code=@foo.sh;type=text/plain' http://pastebin.com/api_public.php; echo

Für „foo.sh“ deinen Dateinamen einsetzen. Unterschied zu deinem Aufruf wäre, dass der Request dann ein Multipart-MIME-Request wird, was Dateiupload sauber erlaubt.

Ich erhalte bei meinem Befehl da einen Fehler, weiß aber nicht, ob das an einem fehlenden Pastebin-Account liegt oder nicht. Nur für diesen Versuch mag ich mich nicht registrieren.

BlackHollow

(Themenstarter)

Anmeldungsdatum:
28. Juli 2009

Beiträge: 199

Ich erhalte auch einen Fehler...

ERROR: Invalid POST request, or "paste_code" value empty.

Du brauchst für http://pastebin.com/api_public.php keinen Account ☺ nur für http://pastebin.com/api/api_post.php

Trotzdem Danke für Eure Hilfe 😀

Antworten |