Linux で SSH パイプを使用する方法
UNIX パイプは、UNIX および UNIX 類似のオペレーティング システムの開発における画期的な一歩です。これにより、ユーザーは基本プログラムの入力と出力をリンクすることで、複雑なコンピューティング タスクを実行できるようになりました。この記事では、SSH プロトコルを使用してネットワーク経由で Linux で UNIX パイプを使用する方法を説明することで、これを拡張します。
Unix パイプラインを理解する
Unix (さらには Linux) 上のパイプは、プログラムをチェーンして連携させて動作させるために使用されます。たとえば、cat
を使用するとファイルの内容を表示できますが、パイプ (|
) を使用すると、< a i=3> コマンドを コマンドに変更して、ファイルを読みやすくします。cat
more
ここでの基本的な考え方は次のとおりです: program1 fileX | program2
。ただし、1 つのファイルと 2 つのプログラムに限定されるわけではありません。パイプ処理は、考えられる限り多くの修飾子を使用することで、必要なだけ高度なものにすることができます。
SSH 状況でパイプ (|
) を有効に活用する方法をいくつか紹介します。
圧縮されたディレクトリを自動的に転送する
UNIX パイプを使用する最も一般的な方法の 1 つは、プログラムの出力をローカル システム内のファイルに保存することです。たとえば、 echo "Hello, MakeTechEasier!"| tee Hello
を実行すると、プログラム echo
が実行され、文字列「Hello, MakeTechEasier!」も保存されます。ファイル内「こんにちは。」
とはいえ、このアイデアを使用して、2 つの Linux ホスト間でディレクトリを転送することもできます。これを行うには、tar
を使用して送信するフォルダーを読み取り、それを SSH デーモンにパイプします。
このコマンドは、フォルダーを tar アーカイブにバンドルし、コマンドの標準出力に送信します。次に、UNIX パイプはそのデータを読み取り、SSH を使用してリモート Linux ホストに送信します。
このコマンドを逆にして、リモート ホストからファイルを取得することもできます。
リモートホストからのファイルのプッシュと取得
パイプと SSH を使用して、ネットワーク経由で個々のファイルを送信することもできます。これは、ファイルの内容をロードし、SSH 経由で送信する方法として cat
を使用することで機能します。
リモート ホストはローカルの cat プロセスから出力ストリームを受け取り、ファイルをそのまま再構築します。
リモート ホストからファイルを取得するには、コマンドの順序を逆にして、リモート ファイルのパスを指定する必要があります。
ドライブのリモートバックアップと復元
ファイルやディレクトリの送信と同様に、UNIX パイプと SSH を使用して Linux のドライブ全体をリモートでバックアップすることができます。これは、オフサイトのバックアップを迅速に作成したいが、現在予備の物理ドライブがない場合に役立ちます。
ドライブ全体をバックアップするには、バックアップするドライブに「if=」変数を設定して dd
を実行し、それを SSH デーモンにパイプします。
このコマンドを逆に実行すると、ディスク イメージをリモート マシンから物理ディスクに復元することもできます。
さらに、この SSH パイプ構文は個別のディスク パーティションでも機能します。たとえば、システムの「/dev/sda4」に /home パーティションがある場合、次のコマンドを実行してそのバックアップを作成できます。
オーディオ入力をリモート マシンにリダイレクトする
SSH パイプの利点の 1 つは、リモート マシンをローカル リソースであるかのように操作できることです。これには、システムのオーディオ入力などのデバイス ファイルを利用する機能が含まれます。
これを行うには、SSH を使用してリモート ALSA サブシェルを実行し、その出力をローカル ALSA デーモンに送信します。
これにより、リモート マシン上のデフォルトのオーディオ入力デバイスがリッスンされ、システム上で聞こえているものが再生されます。ただし、コマンドを反転すると、ローカル マシンのオーディオ入力がリモート ホストのオーディオ出力に送信されます。
ALSA SSH パイプは、他のオーディオ再生ツールと組み合わせた場合にも機能します。たとえば、record 出力を SSH パイプから ffmpeg に送信できます。
リモート Web カメラからのライブ ビデオのストリーミング
Linux における SSH パイプのもう 1 つの優れた用途は、ライブ ビデオ Web カメラ フィードのストリーミングです。オーディオと同様に、これによりリモート ホストのデバイスを利用し、その出力をローカル マシン上でレンダリングできるようになります。
リモート ホストの Web カメラからストリーミングするには、ffmpeg サブシェルで SSH を実行し、それをローカル マシン上のビデオ再生クライアントにパイプします。
このコマンドは、リモート マシン上の最初の Web カメラから生のビデオ出力をストリーミングします。
リモート Web カメラの映像を別のファイルに記録することもできます。これを行うには、データをビデオ プレーヤーにリダイレクトする前に、SSH パイプから tee にデータを送信します。
リモートコンソールでのテキストの印刷
オーディオとビデオの他に、SSH パイプを使用してリモート マシンの TTY に生のテキストを送信することもできます。これは、GUI のないシステムにステータス メッセージを送信する場合に役立ちます。
まず、ローカル マシン上に FIFO パイプを作成します。
FIFO を使用して listen tail
コマンドを実行し、その出力を SSH デーモンに送信します。
echo コマンドを使用してテキスト データを送信し、新しい FIFO パイプがネットワーク上で動作しているかどうかをテストします。
リモート データをローカル クリップボードにパイプする
システム クリップボードの最大の欠点は、ローカル マシンでのみ機能することです。これは、複数のコンピュータを使用していて、一時ファイルを作成せずにデータを転送したい場合に問題になります。
これを修正する 1 つの方法は、リモート ファイルを読み取ってローカル システムのクリップボードに直接送信できる SSH パイプを作成することです。
このコマンドはリモート マシンに接続し、cat ユーティリティを実行して、「ramces.txt」ファイルの読み取りを開始します。完了すると、リモート データがローカル マシンに送り返され、システムのクリップボードにリダイレクトされます。
次のコマンドを使用して、システムの現在のクリップボードをファイルとしてリモート マシンにプッシュすることもできます。
UNIX パイプと SSH を使用してネットワーク経由でデータを送信する方法を学ぶことは、コンピュータ ネットワークの仕組みを理解するための最初のステップにすぎません。ネットワークの詳細を確認するには、Traceroute を使用してパケットの送信先を追跡します。
画像クレジット: Mikhail Fesenko、Unsplash 経由。すべての変更とスクリーンショットは Ramces Red によるものです。
コメントを残す