最近、次のコードを使用して 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
最初に を 0 以外の値に設定するか、オプションの 1 つ-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
2 行目として追加して、実行されるたびに各行のトレースを出力するようにします。