rsync ジャンプサーバーを使用すると、Bash スクリプトのロギングは期待どおりに機能しません。

rsync ジャンプサーバーを使用すると、Bash スクリプトのロギングは期待どおりに機能しません。

リモートホストでいくつかのrsyncを実行するために、以下のシェルスクリプトを使用しています。 JumphostでSSHを接続し、SSH経由で次のようにrsyncを起動します。

ここでは、ログの開始日と終了日をキャプチャする必要があります。ただし、以下のスクリプトを実行すると、両方のログが同時に印刷されます。

より正確には、ここのスクリプトはServerAで生成され、ServerBにジャンプし、もう一度ServerCにジャンプしてからrsyncコマンドを実行します。ここでは、ServerAでrsyncコマンドの開始時刻と終了時刻を取得する必要があります。ただし、この終了時間は期待どおりに機能しません。スクリプトが起動すると、log.txtに開始時間と終了時間が記録されますが、rsyncプロセスがまだ進行中であることがわかります。

date="`date +%T-%D`"
i=folder
echo "Log started at $date for $i" >> logs.txt
ssh -T -i key user1@HOST1  "ssh -T  user2@HOST2    << EOF
rsync -av --progress source dest
EOF"
###Here the logging not excecuting after the rsync command.
if [ $? -eq 0 ]; then
echo "Log ended at $date for $i" >> logs.txt
fi

ここで、リモートホストでrsyncプロセスが完了したら、このスクリプトを有効にしてログセクションの最後に進む必要があります。

待機コマンドを試しましたが、役に立ちませんでした。

どんなアイデアにも感謝します。

ベストアンサー1

おすすめ記事