Ich habe vor Kurzem versucht, Paste mit dem folgenden Code an pastebin.com zu senden:
https://github.com/mefuckin/pastebin-shell/blob/master/pbin
Was mir bei diesem Skript aufgefallen ist, ist, dass es anscheinend keinen API-Benutzerschlüssel sendet. In Zeile 183 ist er aufgeführt:
--data "api_user_key=$api_user_key" \
daher dachte ich, es müsste lediglich der Wert angegeben werden, und zwar wie folgt:
api_user_key="VALUE HERE"
und das würde es an die API senden. Ich bin mir jedoch nicht sicher, was dieser Teil des Codes macht (Teil des Codes, der bei 174 beginnt):
[ $logintopastebin -ne 0 ] && auth_user
api_paste_code=$( cat - )
curl -0 --show-error \
--data "api_dev_key=$api_dev_key" \
--data "api_option=paste" \
--data "api_paste_code=$api_paste_code" \
--data "api_paste_format=$api_paste_format" \
--data "api_paste_private=$api_paste_private" \
--data "api_paste_expire_date=$api_paste_expire_date" \
--data "api_user_key=$api_user_key" \
--data-urlencode "api_paste_name=$api_paste_name" \
--data-urlencode "api_paste_code=$api_paste_code" \
"$api_url/api_post.php"
Bedeutet dieser Teil des Codes, dass alle diese Argumente an die API gesendet werden?
Antwort1
Der Code sendet die api_user_key
. Er kann einen leeren String senden, wenn die Variable nicht gesetzt ist. DieSkriptenthält Code zum Finden des Benutzerschlüssels durch Abfragen des Servers in der Funktion auth_user
, aber diese Funktion wird nur aufgerufen, wenn Sie logintopastebin
am Anfang einen Wert ungleich Null festlegen oder eine der Optionen -u
oder -l
in der Befehlszeile übergeben. Sie können den Wert überschreiben, indem Sie die Variable api_user_key
manuell nach oder anstelle des Aufrufs von festlegen auth_user
, vor dem Aufruf von curl
, z. B.
api_user_key=$(cat ~/.passwords/pastebin/api_user_key)
…
if [ -z "$api_user_key" ] && [ "$logintopastebin" -eq 0 ]; then
auth_user
fi
api_paste_code=$( cat - )
curl -0 --show-error \
…
Wenn Sie nicht verstehen, was das Skript macht, fügen Sie es set -x
als zweite Zeile hinzu, damit bei der Ausführung eine Ablaufverfolgung jeder Zeile gedruckt wird.