あるサーバーのstdoutを別のサーバーのstdinにパイプできますか?

あるサーバーのstdoutを別のサーバーのstdinにパイプできますか?

stdoutstdinあるCentOSサーバーのデータは、パイプを介して別のCentOSサーバーに転送する必要があります。可能ですか?

修正する

ScottPack、MikeyB、およびjofelはすべて有効な答えを持っています。私の質問にはセキュリティが要件として指定されていませんが、セキュリティは常に優れているため、Scottに答えます。しかし、他の2人の同僚の提案も可能です。

答え1

これは恥ずかしくない確信です。

ユーザーがsshリモートサーバーでコマンドを実行すると、ある種の内部入出力リダイレクトが実行されます。実際、私はこれがOpenSSHの微妙に良い機能の1つだと思います。特に、sshリモートシステムでランダムなコマンドを実行するために使用する場合、sshは実行STDINSTDOUTのコマンドをマップします。

たとえば、バックアップtarballを作成したいが、ローカルに保存できないか、望ましくないとします。この構文を見てみましょう。

$ tar -cf - /path/to/backup/dir | ssh remotehost "cat - > backupfile.tar"

私たちはtarballを作成し、STDOUTそこに一般的な内容を書いています。 SSHを使用してリモートコマンドを実行するので、STDINSTDINcat。次にファイルにリダイレクトします。

答え2

回線セキュリティについて心配する必要がない場合にホスト間でデータを転送する便利な方法は、接続の両方netcatで使用することです。

これにより、非同期に設定することもできます。

「受信機」(実際には双方向で通信しますが、これを考える方が簡単です)で次のように実行します。

nc -l -p 5000 > /path/to/backupfile.tar

「発信者」で実行:

tar cf - /path/to/dir | nc 1.2.3.4 5000

答え3

一方向および双方向接続を作成する非常に強力なツールは次のとおりです。socat。可能性に関する簡単なアイデアを見るには、例を見てください。マンページ

同様のツールを完全に置き換え、netcatSSL暗号化接続をサポートします。初心者には十分簡単ではないかもしれませんが、少なくともそれが存在することを知っておくことをお勧めします。

答え4

コマンドを使用してSSH公開鍵を別のホストに配置します。

ssh [email protected] 'cat >> .ssh/authorized_keys' < .ssh/id_rsa.pub

関連情報