単一のスクリプトを使用して、2つのサーバー(ソース - >サーバーA - >サーバーB)間でファイルを転送する方法です。

単一のスクリプトを使用して、2つのサーバー(ソース - >サーバーA - >サーバーB)間でファイルを転送する方法です。

私は3つのLinuxサーバーを持っています。 1つ目は開発マシン(バイナリをコンパイルする場所)、2つ目は「テストベッド」に接続するのに役立つ「ジャンプボックス」です。ここではバイナリをコピーする必要があります。

今私は次のようなことをしています。

1) scp -r binabc@jumpbox:/temp/ を使用して、マイバイナリをdevmachineからJumpboxにコピーします。

2) Jumpbox にログインし、scp -r bin abc@testbed:/bin/ を使用して Jumpbok からテストベッドにバイナリファイルをコピーします。

1つのスクリプトで上記の2つの手順を実行する方法はありますか?

これを行うには、パスワードをファイルに保存する必要があることを知っていますが、それでも問題ありません。いつでも暗号化を使用できます。

答え1

最も簡単なオプションはSSH接続を行うことです公開鍵認証ではパスワードは必要ありません。。これは、サーバー間で公開鍵を共有する必要があることを意味します。

その後、「オリジナル」サーバーで同様のコマンドを使用できます。

cat file | ssh user@serverA "ssh user@serverB \"cat > file\""

答え2

SSH用の公開/秘密鍵を使用してパスワードのないログインを設定する必要があります。

次に、コピーするファイルがにあるとしますdir

source$ tar cf - dir | ssh servera 'ssh serverb "cd dest ; tar xf - " '

どこ

  • source$プロンプトを表示しますか?
  • tar cf - dirdirのtarファイルをstdinにコピーする
  • ssh serveraserveraにログインしてください。
  • cd dest ; tar xf - dest ディレクトリの標準入力ファイルから抽出されます。

関連情報