如果文件未发送到远程服务器则创建日志的 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甚至更多,但手册说它是用于调试目的。

相关内容