複数のsshおよびscp呼び出しを含む一連のコマンドをスクリプト化したいと思います。毎日、私は自分がこのタスクを手動で実行していることに気づきます。
ローカルシステムから、SYSTEM1からSYSTEM1にsshからSYSTEM1 mkdir / tmp / dataに
、SYSTEM2
からSYSTEM2にsshからSYSTEM2に
mkdir / tmp / data、
SYSTEM3にSSH
SYSTEM3:/ dataからSYSTEM2へのscpファイル:/ tmp / dataexitから
SYSTEM2へ
scpファイルからSYSTEM2:/ dataおよびSYSTEM2:/ tmp / dataからSYSTEM1:/ tmp / data
rm -fr SYSTEM2:/ tmp/data
出口からSYSTEM1へ
SYSTEM1:/ dataおよびSYSTEM1:/ tmp / dataからLOCAL:/ data
rm -fr SYSTEM1:/ tmp/dataへのscpファイル
私はこのプロセスを少なくとも1日1回行います。異なるシステム間を移動し、その後クリーンアップするのに約5〜10分かかります。これをbashスクリプトで自動化したいのですが、これまでのところ私のアマチュアの試みは成功していません。ご想像のとおり、システム通信は制限されています。つまり、LOCALはSystem1のみを認識でき、System2はSystem1とSystem3のみを認識でき、system3はsystem2のみを認識できます。これを行うための最良の方法は何ですか?さらに、System1は他の多くのシステムのハブであるため、SYSTEM2はユーザーが指定する必要があります(System3は、他のSYSTEM2と比較して常に同じ相対IP /ホスト名を持ちます)。
コマンドをシェルスクリプトに適切な順序で配置し、プロンプトが表示されたらパスワードを手動で入力しようとしましたが(これはすでに効率が大幅に向上します)、メソッドが機能しないか、スクリプトの実行が間違っています。さらに、「system2」が接続するパターン、コピーするデータのパターン、およびローカルシステム上のデータのターゲットの場所を取得するスクリプトのコマンドライン引数が必要です。
そのような
./grab_data system2 *05-14* ~/grabbed-data
検索を行ったところ、次のステップは、ローカルタスクを実行するスクリプトを各システムに配置し、それぞれのリモートシステムからsshコマンドを使用してスクリプトを実行することだと思います。もっと良い方法はありますか?どのコマンドを使用するかを検討する必要があります。また、この種のネストされたsshおよびscpの問題を自動化するための一般的なアプローチは何でしょうか。
私の説明は少し複雑かもしれないと思いますので、私が適切に説明しなかった領域については説明を求めてください。
ありがとう。