stdout
stdin
あるCentOSサーバーのデータは、パイプを介して別のCentOSサーバーに転送する必要があります。可能ですか?
修正する
ScottPack、MikeyB、およびjofelはすべて有効な答えを持っています。私の質問にはセキュリティが要件として指定されていませんが、セキュリティは常に優れているため、Scottに答えます。しかし、他の2人の同僚の提案も可能です。
答え1
これは恥ずかしくない確信です。
ユーザーがssh
リモートサーバーでコマンドを実行すると、ある種の内部入出力リダイレクトが実行されます。実際、私はこれがOpenSSHの微妙に良い機能の1つだと思います。特に、ssh
リモートシステムでランダムなコマンドを実行するために使用する場合、sshは実行STDIN
中STDOUT
のコマンドをマップします。
たとえば、バックアップtarballを作成したいが、ローカルに保存できないか、望ましくないとします。この構文を見てみましょう。
$ tar -cf - /path/to/backup/dir | ssh remotehost "cat - > backupfile.tar"
私たちはtarballを作成し、STDOUT
そこに一般的な内容を書いています。 SSHを使用してリモートコマンドを実行するので、STDINSTDIN
はcat
。次にファイルにリダイレクトします。
答え2
回線セキュリティについて心配する必要がない場合にホスト間でデータを転送する便利な方法は、接続の両方netcat
で使用することです。
これにより、非同期に設定することもできます。
「受信機」(実際には双方向で通信しますが、これを考える方が簡単です)で次のように実行します。
nc -l -p 5000 > /path/to/backupfile.tar
「発信者」で実行:
tar cf - /path/to/dir | nc 1.2.3.4 5000
答え3
答え4
コマンドを使用してSSH公開鍵を別のホストに配置します。
ssh [email protected] 'cat >> .ssh/authorized_keys' < .ssh/id_rsa.pub