ファイルがリモートサーバーに送信されていない場合にログを生成するシェルスクリプト

ファイルがリモートサーバーに送信されていない場合にログを生成するシェルスクリプト

デフォルトでは、リモートサーバー間でファイルをrsyncする小さなスクリプトがあります。認証用のSSHキーが生成されました。

スクリプトにはこれだけが存在します

rsync /root/Desktop/cpfies/files/*.xls user@host:root/Desktop/cpfies/moved

基本的に私が作りたいのはこのスクリプトのログ方法です。派手なものや何もありません。確立されていません」

また、ファイルが転送された場合に正常に転送されたことをログに表示します。

または、ホストまたはユーザーが間違っている場合は、マイログに表示されます。

感謝と安心の挨拶、サガーマンダル

答え1

失敗した試行のみを記録したい場合は、$?最後のスクリプトの戻り値であるrsync戻り値を確認して取得できます。rsync成功すると0を返し、他のエラーでは0以外の値を返します(https://lxadm.com/Rsync_exit_codes)。私はこれをします:

#!/bin/bash

ret_text=$({rsync /root/Desktop/cpfies/files/*.xls user@host:root/Desktop/cpfies/moved} 2>&1)

if [ $? -ne 0 ]; then
    echo rsync error code $? on $(date)
    echo rsync output follows
    echo $ret_text
fi

scriptこれを実行すると、出力を同様のログファイルにリダイレクトするログファイルに配置するか、スクリプトを呼び出してスクリプトscript >> log_file>> log_file各echoコマンドの後に追加できます。

成功した試みも記録したい場合

rsync /root/Desktop/cpfies/files/*.xls user@host:root/Desktop/cpfies/moved &>> log_file

または

rsync --log-file=log_file /root/Desktop/cpfies/files/*.xls user@host:root/Desktop/cpfies/moved

-vまた、またはを追加して、rsyncによって生成される情報の量を増やすことをお勧めします-vv。もっと使うことができますが、-vvvドキュメントはデバッグ目的で使用されていることを示しています。

関連情報