同步log文件,并错误发送邮件
(要求将/var/log/logbak/下的log文件同步到192.168.0.111上对应的目录并发送错误报告,注意:此处log文件是以日期命名的,例如:13011105-xxx.log,日期等同于date -d -1hour +%y%m%d%H )
#!/bin/bash
if [ -z $1 ]
then
DATE=`date -d -1hour +%y%m%d%H`
srcdir="/var/log/trackerlogs/${DATE}-who"
else
DATE=`date -d -$1day +%y%m%d`
srcdir="/var/log/logbak/${DATE}"
fi
echo > /tmp/Rsync_status.txt
#Synchronization
function Sync()
{
echo "Sync $1 ...... Starting"
Host="$1"
rsync -vzrtopg --password-file=/etc/rsyncd.log_59 ${srcdir}* backup@${Host}::log_59 >>/tmp/Rsync_status.txt 2>&1
if [ $? -eq 0 ]
then
echo "Sync $1 ...... [OK] " |tee -a /tmp/Rsync_status.txt
else
echo -e "\033[1;31;40mSync $1 ...... [FAILED] \033[0m" |tee -a /tmp/Rsync_status.txt
mail -s "59FAILED" xx@qq.com -c xx1@qq.com -c xx2@qq.com -c xx3@qq.com </tmp/Rsync_status.txt
fi
}
Sync 192.168.0.111
wait
echo END
echo -----------------------------
(输入起始和结束日期,将/var/log/logbak/下的log文件同步到192.168.0.111对应目录并发送错误报告,注意:此处log文件是以日期命名的,例如:13011105-xxx.log
#!/bin/sh
echo -n "Enter the start time(for example:20130101):"
read start_time
echo -n "Enter the end time(for example:20130102):"
read end_time
startDate=$start_time
endDate=$end_time
startSec=`date -d "$startDate" "+%s"`
endSec=`date -d "$endDate" "+%s"`
echo ""
echo "........................................."
echo "now,we will sync the log form $start_time to $end_time"
echo "........................................."
sleep 1
function check_syncstatus()
{
if [ $? -eq 0 ]
then
echo "Sync ...... [OK] " |tee -a /tmp/Rsync_status.txt
else
echo -e "\033[1;31;40mSync $1 ...... [FAILED] \033[0m" |tee -a /tmp/Rsync_status.txt
mail -s "59FAILED" xx@qq.com -c xx1@qq.com -c xx2@qq.com -c xx3@qq.com </tmp/Rsync_status.txt
fi
}
for((i=$startSec;i<=$endSec;i+=86400));
do
data=`date -d "@$i" "+%y%m%d"`
for tm in $data
do
rsync -vzrtopg --password-file=/etc/rsyncd.log_3 /var/log/logbak/$tm* backup@192.168.0.111::log_3
check_syncstatus
done
done