我正在使用此脚本从我们的备份目录中获取文件列表及其大小。这很好,但是我想做的就是将结果发送给dbadistro@abc.com。我们在服务器中使用sendmail。请帮忙。这是脚本:
#!/bin/bash
HEADER="nLIST OF BACKUPS IN $(hostname):/backups/$1/$2:n"
echo -e $HEADER
ls -lth "/backups/$1/$2" | awk 'BEGIN {print "FILE_NAMEtttDATEttSIZEn--------------------------------------------------------"} NR>1 {printf "%stt%s-%s %st%sn",$9,$6,$7,$8,$5}'
脚本输出样本:
LIST OF BACKUPS IN server1:/backups/mysql/daily:
FILE_NAME DATE SIZE
--------------------------------------------------------
meb.20140108-030003.img Jan-08 19:35 90G
meb.20140107-030003.img Jan-07 19:35 87G
meb.20140106-030003.img Jan-06 19:35 99G
meb.20140105-030003.img Jan-05 19:35 98G
我想每天将此输出通过电子邮件发送给我。请帮助。
从 cron
运行脚本。使用crontab
中的MAILTO=
指定在哪里通过电子邮件发送其输出的位置。
请参阅mail -S5 controntab
和man crontab
这是一个bash脚本。使用本地邮件代理。
#!/bin/bash
set -e
out='/tmp/some_random_file_or_something'
mutt -e 'my_hdr From:god@backup.com' -s "[BACKUPS ARE READY! ;)] $(date)." your@email.com -c yourhome@email.com < $out
rm -f $out
在cronjob中的命令下方。例如,每天凌晨5点发送邮件
0 5 * * * bash /FULL_PATH/yourscript.sh
通常,如果您的系统具有SendMail,则应支持mailx
命令,这更容易。
$ cat yourscript.sh
#!/bin/bash
HEADER="nLIST OF BACKUPS IN $(hostname):/backups/$1/$2:n"
echo -e $HEADER
ls -lth "/backups/$1/$2" | awk 'BEGIN {print "FILE_NAMEtttDATEttSIZEn--------------------------------------------------------"} NR>1 {printf "%stt%s-%s %st%sn",$9,$6,$7,$8,$5}' > temp
cat temp|mailx -s "backup report on `date`" dbadistro@abc.com