- Dumbpipeは、2台のコンピュータ間で手軽にデータのパイプ接続を可能にするUnixスタイルのツール
- インストールと利用が非常に簡単で、アカウントや追加設定が不要
- 一方のコンピュータでは受信側モードで待機し、秘密鍵と接続コマンドを提供する
- もう一方のコンピュータでは1行のコマンドで送信・接続してデータを渡せる
- ネットワーク環境に関係なく動作するため、場所を問わず活用できる
Dumbpipe 紹介
- 2台のコンピュータ間でUnixパイプのように直接データをやり取りできるオープンソースツール
- 複雑な設定なしで1行でインストール・実行でき、実用的で導入しやすい
主な特徴
- 1台のコンピュータにインストール後、
./dumbpipe listen コマンドで待機(受信)モードに入れる
- 実行時に自動生成された秘密鍵とともに、別のコンピュータから接続できる専用の接続コマンドが提供される
- 送信側は
echo "hello" | ./dumbpipe connect ... の形で手軽にデータを送信できる
- 別途アカウント作成は不要
- 登録、ログイン、会員情報の入力なしですぐに利用できる
- 追加設定なしですぐに動作
- 環境変数、設定ファイル、ファイアウォール設定なしでそのまま使える
- 世界中どこからでも2台のデバイス間でデータを送受信
- プライベートネットワーク、クラウド、ローカルネットワークなどネットワーク環境の制約なく動作する
使用例の要約
- 受信側は dumbpipe をlisten モードで実行し、接続に必要なキーなどをコピーして共有する
- 送信側はそのキーを含むconnect コマンドを使って、データをストリームとして送信する
活用の示唆
- 新規ユーザーや非熟練者でも簡単にネットワークデータ転送パイプラインを構成できるようになる
- ファイルや簡単なメッセージの送信、デバイス間のデータ中継、開発・デプロイ自動化など、さまざまな用途にすばやく活用できる
- 単一コマンドと直感的なワークフローでエンジニアの生産性向上に貢献する
1件のコメント
Hacker Newsの意見
ssh と socat または mkfifo を使って、リモートでコマンドをやり取りする方法を紹介している
もし対象がファイアウォールや NAT に遮られているなら、ssh-j.com のようなパブリック SSH サーバーをリレーとして使い、安全にデータを送受信できる(二重 SSH トンネリングを活用)
beam 関連スレッドに最初に投稿した内容でもある リンク
2 台の PC が USB ケーブルだけで簡単にファイルをやり取りすることが標準になっていない理由が気になる。すべての OS が同じプロトコルだけをサポートすれば、最初から提供されていてよかった機能に思える。USB A-A ケーブルが理論上存在しないのはわかるが、そういう点こそ必要性の根拠になる。USB C なら十分可能なはずで、Android と PC の間ではある程度できるが、2 台のノート PC 同士ではできない
MS もこれをサポートするツールを出していたが、Windows CE でしか提供されていなかったようだ MS 公式リンク
関連して、私がまとめたファイル転送ツールの一覧(主にブラウザベース + 少しの CLI)がある。状況が来るたびに共有していて、良いツールをさらに探している 私のツール一覧
dumbpipe と Tailscale の間で、どれくらい実装の重複があるのか気になる。共通して必要な機能がかなり多そうで、NAT 通過のような低レベル部分ではすでに使えるライブラリがいろいろありそうだ。あるいはこれが最初のそうしたライブラリなのかもしれない
pico.sh では似たようなファイル転送機能を SSH を使って実装していた pipe.pico.sh
こうした類のトンネリングツールのエコシステムに興味があるなら、参考になる awesome リストがある awesome-tunneling
iroh は本当に素晴らしい技術だ。2 週間前にベルリンの web3 summit で Rüdiger(N0)のワークショップに参加したが、ものすごく刺激を受けた。似たようなサービスを作るコードがここで公開されている iroh-workshop コード スライドもぜひ見てほしい
もう少し進んだ pipe が欲しいなら、私が Iroh ベースで開発中のトンネルマネージャー CLI もある。TCP、UDP、UNIX ソケットのポートフォワーディングをサポート qtm GitLab
この種のソリューションは年に 1、2 回は登場する。接続オーケストレーションに特化した良いオープンソースとして Spacebrew を勧めたい Spacebrew 公式ドキュメント
この方法はいつも特に興味深かった pwnat GitHub
すべてのケースをカバーできるわけではなく、少し複雑ではあるが、中間の媒介が不要という最大の利点がある