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
デフォルトでは xclip
は PRIMARY
セレクションを使用し、セレクションが空だった場合、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 が存在しないペーストを管理することはできません。作成時に、既存のペーストと一致する場合など、管理ができなくなります。
有効期限
デフォルトでは、作成されるペーストに有効期限は設定されません。サービスのオペレーターが維持している限り永遠に保存されます。-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 "-"