Недавно я попытался использовать следующий код для отправки пасты на pastebin.com:
https://github.com/mefuckin/pastebin-shell/blob/master/pbin
Я заметил, что этот скрипт не отправляет api_user_key. Он указан в строке 183:
--data "api_user_key=$api_user_key" \
поэтому я подумал, что достаточно будет просто указать его значение, например:
api_user_key="VALUE HERE"
и это отправит его в API. Однако я не уверен, что делает эта часть кода (часть кода, которая начинается с 174):
[ $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"
Означает ли эта часть кода, что все эти аргументы будут отправлены в API?
решение1
Код отправляетapi_user_key
. Он может отправить пустую строку, если переменная не установлена.сценарийсодержит код для поиска ключа пользователя путем запроса сервера в функции auth_user
, но эта функция вызывается только если вы устанавливаете logintopastebin
ненулевое значение в начале или если вы передаете одну из опций -u
или -l
в командной строке. Вы можете переопределить значение, установив переменную api_user_key
вручную после или вместо вызова auth_user
, перед вызовом curl
, например
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 \
…
Если вы не понимаете, что делает скрипт, добавьте set -x
вторую строку, чтобы он выводил трассировку каждой строки по мере ее выполнения.