26

bashシェルスクリプト内でpastebin( 「API」機能を介して)を使用することは可能ですか?http-postを送信するにはどうすればよいですか?URLを取り戻すにはどうすればよいですか?

4

11 に答える 11

20

pastbin.comが公開APIを閉じたとき、私は代替手段を探していました。

スプランジは素晴らしいです。使用法:

<command> | curl -F 'sprunge=<-' http://sprunge.us

または、私がそれを使用するとき:

alias paste="curl -F 'sprunge=<-' http://sprunge.us"
<command> | paste
于 2014-06-09T22:55:57.853 に答える
7

ドキュメントPOSTには、リクエストを送信する必要があると記載されています

http://pastebin.com/api_public.php

唯一の必須パラメータはpaste_code、です。文字列型は、作成する貼り付けです。

成功すると、新しいpastebinURLが返されます。

コマンドを使用して、bashシェルからこれを簡単に行うことができますcurl

curl-dオプションを使用しPOSTて、指定されたURLにデータを送信します。

デモ:

このデモでは、次のコードを使用して新しいペーストを作成します。

printf("Hello..I am Codaddict");

あなたの殻から:

$ curl -d 'paste_code=printf("Hello..I am Codaddict");' 'http://pastebin.com/api_public.php'
http://pastebin.com/598VLDZp
$

ここで、URL http://pastebin.com/598VLDZpが表示されている場合は、私の貼り付けが表示されます:)

またはwget、オプションを使用して値--post-dataを送信するコマンドを使用して実行することもできPOSTます。

私はこのコマンドを試しましたが、正常に動作します。

wget --post-data 'paste_code=printf("Hello..I am Codaddict");' 'http://pastebin.com/api_public.php'
于 2010-12-13T08:26:08.503 に答える
6

あなたの中に以下を入れてください.bashrc

sprunge() {
  if [[ $1 ]]; then
    curl -F 'sprunge=<-' "http://sprunge.us" <"$1"
  else
    curl -F 'sprunge=<-' "http://sprunge.us"
  fi
}

...そしてあなたは実行することができます:

sprunge filename # post file to sprunge

...また...

some_command | sprunge # pipe output to sprunge
于 2014-06-09T22:59:32.923 に答える
2

codaddictによって投稿されてから、pastebinに投稿するためのAPIが変更されました。
詳細はこのリンクで見つけることができます:https ://pastebin.com/api

例: curl -d 'api_paste_code=printf("Hello..\n I am Codaddict");' \ -d 'api_dev_key=<get_your_own>' \ -d 'api_option=paste' 'http://pastebin.com/api/api_post.php'

現在のところ、3つの重要なフィールドがあります:
api_dev_key->それを取得するには、pastebin.comにログインを作成する必要があります->
api_option投稿するフォーマット
api_paste_code->投稿したいテキスト

于 2018-05-11T02:52:47.150 に答える
2

https://paste.c-net.org/には、それらすべてよりも単純なAPIがあります。単にそれに「POST」します。

ウェブサイトから:

Upload text using curl:
$ curl -s --data 'Hello World!' 'https://paste.c-net.org/'

Upload text using wget:
$ wget --quiet -O- --post-data='Hello World!' 'https://paste.c-net.org/'

Upload a file using curl:
$ curl --upload-file @'/tmp/file' 'https://paste.c-net.org/'

Upload a file using wget:
$ wget --quiet -O- --post-file='/tmp/file' 'https://paste.c-net.org/'

Upload the output of a command or script using curl:
$ ls / | curl --upload-file - 'https://paste.c-net.org/'
$ ./bin/hello_world | curl -s --data-binary @- 'https://paste.c-net.org/'

単にnetcatを使用することもできます。termbinとは異なり、paste.c-net.orgは、スクリプトが出力を生成するのに5秒以上かかる場合でもタイムアウトしません。

$ { sleep 10; ls /; } | nc termbin.com 9999
$ { sleep 10; ls /; } | nc paste.c-net.org 9999
https://paste.c-net.org/ExampleOne
于 2019-08-10T14:43:06.843 に答える
1

他の2つの回答(2014年頃から)はhttp://sprunge.usを指しています。これは、このように使用するように設計されています...

curl --form 'sprunge=@yourfile.txt' sprunge.us

ただし、2018年の時点で、sprunge.usは過負荷になり、すべてのリクエストに500内部サーバーエラーを返す傾向があります。300KB以上2.8MB以下のファイルの場合、 http ://ix.ioの非常によく似たサービスで幸運を祈りました。

curl --form 'f:1=@yourfile.txt' ix.io

少なくとも2.8MBまでのファイル(そしておそらくそれ以上、私にはわかりません)については、より高度に洗練されたhttps://transfer.shを見つけました。少し異なり、より単純なコマンドラインを推奨し、以下を必要 httpsとします(それなしでは機能しません):

curl --upload-file yourfile.txt https://transfer.sh
于 2018-07-11T00:34:49.263 に答える
1

Sprungeが現在ダウンしていることがわかりましたが、dpaste.comには単純なAPIがあります

STDINから投稿するには

curl -s -F "content=<-" http://dpaste.com/api/v2/

ファイルからfoo.txt

cat foo.txt | curl -s -F "content=<-" http://dpaste.com/api/v2/

文字列を投稿するには

curl -s -F "content=string" http://dpaste.com/api/v2/

応答は、貼り付けへのプレーンテキストのURLになります。


Nb:/ URLの末尾がhttp://dpaste.com/api/v2/必要なようです

于 2019-08-09T17:11:56.697 に答える
1

ペーストビンに投稿する最も簡単な方法

echo 'your message' | sed '1s/^/api_paste_code=/g' | sed 's/$/\%0A/g' | curl -d @- -d 'api_dev_key=<your_api_key>' -d 'api_option=paste' 'http://pastebin.com/api/api_post.php'

パーツを変更して、<your_api_key>好きなようにパイプでつなぐだけです。

sed呼び出しにより、メッセージの先頭にパラメーターが追加さapi_paste_codeれ、各行の末尾に改行が追加されて、複数行の入力を処理できるようになります。@-stdinから読み取るようにcurlに指示します。

貼り付けることができるBash関数

簡単に再利用できるように、bash関数にします(これをコピーして端末に貼り付け、API_KEYフィールドを適切に設定します。

pastebin () {
  API_KEY='<your_api_key>'
  if [ -z $1 ]
  then
    cat - | sed '1s/^/api_paste_code=/g' | sed 's/$/\%0A/g' | curl -d @- -d 'api_dev_key='"$API_KEY"'' -d 'api_option=paste' 'http://pastebin.com/api/api_post.php'
  else
    echo "$1" | sed '1s/^/api_paste_code=/g' | sed 's/$/\%0A/g' | curl -d @- -d 'api_dev_key='"$API_KEY"'' -d 'api_option=paste' 'http://pastebin.com/api/api_post.php'
  fi
  printf '\n'
}

次のいずれかで実行できます。

pastebin 'your message'

または、ファイルをパイプする必要がある場合:

cat your_file.txt | pastebin

于 2019-10-17T21:18:54.740 に答える
1

Vishalの答えに基づいて構築するために、pastebinはHTTPSのみを使用するようにアップグレードされました。

curl -d 'api_paste_code=printf("Hello World");' \
     -d 'api_dev_key=<your_key>' \
     -d 'api_option=paste' 'https://pastebin.com/api/api_post.php'

-X POSTパラメータを指定する必要はありません

詳細については、 https: //pastebin.com/doc_api#1をご覧ください。

于 2020-10-15T07:00:35.980 に答える
0

このページの別の回答に基づいて、STDINから読み取る(または出力がパイプされていると想定する)次のスクリプトを作成しました。

このバージョンでは、URIを(によってjq)エスケープする任意のデータを使用できます。

#!/bin/bash

api_key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

curl -d "api_paste_code=$(jq -sRr @uri)" \
     -d "api_dev_key=$api_key" \
     -d 'api_option=paste' 'https://pastebin.com/api/api_post.php'

echo  # By default, there's no newline
于 2020-10-31T01:52:07.357 に答える
-1

この投稿には少し遅れていますが、これを支援する小さなツールを作成しました。

https://pasteshell.com/

お気軽にチェックして、ご意見をお聞かせください。

ありがとう、

于 2021-05-08T16:39:25.297 に答える