如果檔案未傳送到遠端伺服器則建立日誌的 Shell 腳本

如果檔案未傳送到遠端伺服器則建立日誌的 Shell 腳本

我有這個小腳本,它基本上在遠端伺服器之間進行檔案的 rsync。已產生用於身份驗證的 ssh 金鑰。

腳本中只有這個存在

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

基本上我想創建的是這個腳本的日誌方法,不要花哨或任何東西......只有這個......如果連接丟失並且文件未發送,它會出現在我的日誌中,顯示“檔案未傳送連線未建立” ”

另外,如果文件已發送,它會在日誌中顯示已成功發送。

或者如果主機或使用者錯誤,它會顯示在我的日誌中。

謝謝和問候, 薩加爾·曼達爾

答案1

如果您只想記錄不成功的嘗試,您可以透過查看 來取得 rsync 回傳值$?,這是最後一個腳本的傳回值。rsync成功時傳回 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

您可以將其放入 a 中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甚至更多,但手冊說它是用於調試目的。

相關內容