UnixやLinuxではコマンドをパイプする機能があります。あるコマンドの出力を次のコマンドに繋ぐことで、複雑な処理を一度にできるようになります。開発者であればよく利用する機能でしょう。しかし、このパイプラインはローカルマシン内でしか使えません。 便利な機能なパイプをネットワーク越しでも可能にしよう、それがPiping Serverです。

Piping Serverの使い方

たとえば任意のパスに対して出力します。そうすると受け取り待ちで待機になります。

$ echo 'hello, world' | curl -T - https://ppng.io/hello
[INFO] Waiting for 1 receiver(s)...

別なマシンやターミナルで結果を受け取ります。

$ curl https://ppng.io/hello > hello.txt
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    13    0    13    0     0    118      0 --:--:-- --:--:-- --:--:--   118

そうすると最初の出力側も終了します。

$ echo 'hello, world' | curl -T - https://ppng.io/hello
[INFO] Waiting for 1 receiver(s)...
[INFO] A receiver was connected.
[INFO] Start sending to 1 receiver(s)!
[INFO] Sent successfully!
[INFO] All receiver(s) was/were received successfully

簡易的な管理インタフェースもあります。

適当なファイル、パス名で受け取り待ちになります。

もう少しリッチなWebクライアントもあります。

受信もWebブラウザでできます。

Piping Serverはテキストはもちろん、バイナリファイルも送受信できます。コマンドの結果をPiping Serverに送ることで、一旦入力待ちになります。そして別マシンで結果を受け取って処理を続けるなんてことも可能です。クリップボードを別なマシンに送ると言った使い方もできるでしょう。

Piping ServerはTypeScript製のオープンソース・ソフトウェア(MIT License)です。

Piping Server nwtgck/piping-server: Infinitely transfer between every device over pure HTTP: designed for everyone including people using Unix pipe and even for browser users