Pbpst

提供: ArchWiki
2016年5月5日 (木) 22:39時点におけるKusakata (トーク | 投稿記録)による版 (ページの作成:「Category:インターネットアプリケーション en:Pbpst {{Related articles start}} {{Related|Pastebin クライアント}} {{Related articles end}} pbpst...」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

関連記事

pbpst は pb インスタンス (例: ptpb.pw) と対話するためのコマンドラインツールです。

インストール

公式リポジトリから pbpst をインストールしてください。もしくは、AUR から Git 版をインストールすることもできます: pbpst-gitAUR

設定

基本的に ptpb.pw を使用する分には特別な設定は必要ありません。

使用方法

pbpst はターミナルから実行するコマンドラインツールです。

pb インスタンスに command の出力を送るには、以下のコマンドを使用します:

$ command | pbpst -S
警告: 上記のコマンドは公のペーストサービスにデータを無差別に送信するので注意してください。詳しくは #セキュリティとプライバシー を参照。

ペーストするテキストを手動で入力したい場合、他のコマンドからのリダイレクトを指定しないで pbpst を起動します:

$ pbpst -S
The data to be sent. Line 1.
Line 2.
And other lines!
.
.
.

入力を終了するには、Ctrl+D を押してストリームを終わらせてください。

xclip を使うことでクリップボードの中身を出力することができます:

$ xclip -o | pbpst -S

デフォルトでは xclipPRIMARY セレクションを使用し、セレクションが空だった場合、SECONDARY あるいは CLIPBOARD を使用します。使用するセレクションを指定したい場合、適当な -selection オプションを xclip に付けてください。

ファイルを送信するには:

$ pbpst -Sf path_to_file

上記のコマンドはどれも応答として URL が返ってきます:

$ echo 'ArchLinux: livin’ on the edge!' | pbpst -S
https://ptpb.pw/qJrv

この場合、https://ptpb.pw/qJrv がペーストしたテキストを閲覧できる URL になります。

最後に、pb プロトコルにはペーストをアップロードするための HTML フォームがあります。pb サービスのディレクトリにおける /f というページにフォームが常に存在します。ptpb.pw の場合、https://ptpb.pw/f がそれです。

ペーストの管理

ペーストを管理するときは、UUID が必要になります。UUID は /pbpst/db.json にあるローカルデータベースに保存されています。データベースを手動で検索するのは不便なので、ペーストに分かりやすいメッセージを付与して、コマンドラインから検索します。以下の例ではランダムな文章が入ったペーストを作成・削除しています (-R オプション):

$ thePaste="$(cat /dev/urandom | tr -cd [:print:] | head -c 32)"
$ echo "$thePaste"
kzx['{}uOd6olc`(AZXJc*&q\^TH(plx

$ echo "$thePaste" | pbpst -S -m 'A random test message' 
https://ptpb.pw/scrubbed

$ curl 'https://ptpb.pw/scrubbed'
kzx['{}uOd6olc`(AZXJc*&q\^TH(plx

$ pbpst -Dq test
deadbeef-dead-beef-dead-000000000000	https://ptpb.pw/scrubbed	A random test message	N/A

$ pbpst -Ru deadbeef-dead-beef-dead-000000000000
Paste deleted

$ curl 'https://ptpb.pw/scrubbed'
status: not found

$ pbpst -Dq test

ペーストはローカルデータベースからも削除されるため、-Dq で検索することはできなくなります。

UUID が存在しないペーストを管理することはできません。作成時に、既存のペーストと一致する場合など、管理ができなくなります。

ヒント: 特定の URL のペーストを検索したい場合、現在、pbpst で直接 URL を使ってペーストを検索することはできません。ただし、アドレスの識別子を使ってデータベースを検索することはできます。例えば https://ptpb.pw/RAs8 という URL の場合、太字になっている部分 (RAs8) が識別子です。この識別子を -Dq で指定することで一致するエントリを検索できます:
$ pbpst -Dq RAs8
3bac4f7b-79dd-4eb4-b0d0-42b72f1c681e	https://ptpb.pw/AFUImP5F76wX_ZrottbtWiOfRAs8	-	N/A

有効期限

デフォルトでは、作成されるペーストに有効期限は設定されません。サービスのオペレーターが維持している限り永遠に保存されます。-x オプションを使うことでペーストを削除する秒数を設定することが可能です:

$ thePaste="$(cat /dev/urandom | tr -cd [:print:] | head -c 32)"
$ echo "$thePaste"
cnf[HiC%Ybe't]4aSeIruw5hkB.h~i^B

$ echo "$thePaste" | pbpst -S -m 'A test message that expires after 60s' -x 60
https://ptpb.pw/scrubbed

$ date; curl 'https://ptpb.pw/scrubbed'
Tue Apr 12 19:11:41 CEST 2016
cnf[HiC%Ybe't]4aSeIruw5hkB.h~i^B

$ date; curl 'https://ptpb.pw/scrubbed'
Tue Apr 12 19:13:06 CEST 2016
status: not found

期限切れのペーストは、リモートサーバーからアクセスすることはできなくなりますが、ローカルデータベースには依然として残ります:

$ pbpst -Dq expires
deadbeef-dead-beef-dead-1111111111	https://ptpb.pw/scrubbed	A test message that expires after 60s	1460481140

期限切れのペーストを削除したいときは -Dy を使ってください:

$ pbpst -Dy
$ pbpst -Dq expires

URL の短縮化

-s オプション (小文字-s) を使うことで短縮 URL を作成できます:

$ pbpst -s 'https://www.archlinux.org/'
https://ptpb.pw/HnSO

セキュリティとプライバシー

pb プロトコルを使用して、個人情報あるいは機密情報を送信してはいけません。

全てのペーストは公に公開されます。pbpst-p オプションを使うことで複雑な識別子を使うことはできますが、だからといってセキュリティやプライバシーが確保されるわけではありません。

サービスのオペレーター、あるいはサーバーにアクセスすることができれば誰でもペーストの中身を全て閲覧できてしまいます。

pb サービスで使われる唯一の認証は UUID です。UUID を失った場合、ペーストを管理する手段は消え失せます。UUID を知ることさえできれば、ペーストは如何様にもできます。

pb プロトコルは誰がペーストを作成したのか受取人が確認する手段を用意していません。

GnuPG を使ってペーストに署名

GnuPG の設定と使用方法の詳細は GnuPG のページを見てください。

コマンドの出力にクリア署名を付けるには:

$ command | gpg2 --clearsign | pbpst -S
gpg: using "FFFFFFFF" as default secret key for signing
https://ptpb.pw/scrubbed

$ curl 'https://ptpb.pw/scrubbed'
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

A signed message
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQEcBAEBCAAGBQJXDaNCAAoJEGEa8/dBnOWlUe4H/iviaH5Y4lx78ch5IyNSkRbp
Wzbk4aJsLYMj4idmE82Ligg4d7lZPK1q+65QZIygSeXm7Vo5/YzP7kztenHzxA0G
SvGuvML3RFwBtFb0AWqLE7Mt9zfq7PLSzhF6Qh87TklMSaluN86f5WSZmXca4SZG
BL6eRJtjy7TEWa7/hJc0b1pn851KTBqjYcX6T79UcyR3eE5KLUrqICrY5lVbq1Qm
UpstZWwgfPcchnoU2DfK3auxVRo37oHDT7N6VjEZyLP5ipbp6YPTLiCJhtjxhbLb
x+nNqFYS1USy8EFo/ftudrQSLfhMRVYuQYFalrNGK3r5dw9dAXv5gdiXIz5rsPI=
=FvyE
-----END PGP SIGNATURE-----

gpg2 では署名したいメッセージを入力することが可能であるため、以下のコマンドを使うことで送信したいデータを手動で入力することができます:

$ gpg2 --clearsign | pbpst -S

クリア署名の欠点は不可逆だということです: GnuPG に署名を削除するためのツールは存在しません。また、署名によって最後の行の文字列が変わってしまう可能性があります。クリア署名を使わない方法として --sign --armour を使用する方法も存在します:

$ command | gpg2 --sign --armour | pbpst -S

または:

$ gpg2 --sign --armour | pbpst -S

上記のコマンドで作成された署名は --decrypt で検証あるいは削除することができます:

$ echo 'A signed message' | gpg2 --sign --armour | pbpst -S
gpg: using "FFFFFFFF" as default secret key for signing
https://ptpb.pw/scrubbed

$ curl 'https://ptpb.pw/scrubbed' | gpg2 --decrypt
A signed message
gpg: Signature made Wed 13 Apr 2016 04:02:57 AM CEST using RSA key ID FFFFFFFF
gpg: Good signature from "-"