目的
- 谷歌教育版邮箱寿命1-3年,随时可能被删账号因此,脚本通过监控rclone配置的网盘如果报错就发送邮件提醒.
- rclone支持网盘的都能够监控;支持"我的云端硬盘"和"共享云端硬盘(团队盘)".
脚本
- 项目地址: https://github.com/shusanjing/rclone.config-mail.notif
- 编辑脚本: nano /root/crontab/rc-mail.sh
- bash /root/crontab/rc-mail.sh 8888@qq.com #参数为要发往的邮箱,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
######## 邮件目的地变量 ######## mail=${1:-"mail@qq.com"} #自定义.修改mail@qq.com成要发往的邮箱地址;同时支持传递脚本参数(第一个参数是$1)。"语法:bash rc-mail.sh 8888@qq.com" echo "传入参数:$@" echo "mail变量:$mail" ######## 邮件标题变量 ######## svr_name="[rclone配置状态检查]" ###自定义.邮件主体名称 str_time=$(date +"%Y-%m-%d") #日期变量 title="$svr_name $str_time" #邮件标题 failedtitle="报错 $svr_name $str_time" #执行错误后的邮件标题 succeedtitle="正常 $svr_name $str_time" #执行正确后的邮件标题 ######## rclone配置提取成数组变量 ######## "rclone config file查看配置文件的路径" rcloneconf=$(grep -oP '(?<=\[).*?(?=\])' /root/.config/rclone/rclone.conf | tr "\n" " ") #使用tr命令将文本中的回车转换成空格 array=($rcloneconf) #转成数组 num=${#array[@]} #获取数组数量 echo "输出rcloneconf:$rcloneconf" echo "输出array:$array" echo "输出num总数:$num" echo "-----------" #换行 ################ 数组循环 ################ for var in ${rcloneconf[@]}; do let ++i #i的值递增1 echo "输出标签:$var[$i/$num]" rclonelsd=$(rclone lsd $var: 2>&1) #命令结果赋值给变量,默认只会得到命令成功的输出,如果命令执行失败则返回一个空行,这一步是把标准错误写入标准成功的变量. if [ $? -ne 0 ]; then #判断上一条命令执行结果是否0 echo "failed" title=$failedtitle #标识错误执行结果作为邮件标题 else echo "succeed" title=$succeedtitle #标识正常执行结果作为邮件标题 fi echo -e "输出rclonelsd执行结果:\n${rclonelsd}" #### 发送邮件 #### runinfo=$(time rclone size $var: 2>&1) #查询目录占用体积,如果文件数量非常多耗时比较久可以禁用此命令 echo $runinfo echo -e "$var[$i/$num]\n${rclonelsd}\n${runinfo}\n结尾" | mutt -s "$title[$num]信尾" $mail #echo -e使之激活转义字符 echo "邮件发送完毕-----------" #换行 done |
备选代码和语法
1 2 3 4 5 6 7 8 9 10 11 12 13 |
** # 固定mail变量: mail="mail@qq.com" ###自定义.要发往的邮箱地址 ** bash传入mail参数 # :- 变量为null 或 空字符串 # mail=${1:-aaa} 参数传入为null或者空字符串的时候变量mail取默认值aaa ** 计划任务crontab -e # rc-mail # 0 19 * * * tmux new-session -s rc-mail -d # 5 19 * * * tmux send-keys -t rc-mail 'bash /root/crontab/rc-mail.sh' C-m ** grep正则提取字符串 # rcloneconf=$(grep -oP '(?<=\[).*?(?=\])' /root/.config/rclone/rclone.conf) #从文本提取table名称默认为每行一个 # rcloneconf=($(grep -oP '(?<=\[).*?(?=\])' /root/.config/rclone/rclone.conf | tr "\n" " ")) #包含转成数组语法array=($rcloneconf) ** 发送基本内容邮件 # echo -e "$var[$i/$num]\n${rclonelsd}" | mutt -s "$title[$num]信尾" $mail #echo -e使之激活转义字符 |