环境:A:192.168.0.10 LINUX 所有SCRIPTS都放在这一台,并这一台与所有SERVER都配置成SSH 登陆时不用输入用户名和密码(因这一功能在下一文章中同样用到来收集SERVER LOADING 信息)。
B:192.168.0.11 FTP SERVER 用来存放备份LOG。
涉及到的SCRIPTS:
LogBak.sh
ftptemp.sh
script_file
********** N台 LINUX & UNIX SERVER 要备份 LOG 的机器。
达到的目的:从A台设置CRON JOB ,每天备份前一天的LOG 并 FTP到 B台。
如果从各台SERVER 去设CRON JOB 把LOG FTP 到 FTP SERVER ,那么有几十台要分别设置CRON JOB ,和将SCRIPT. COPY 到每SERVER上。并且在UNIX 上取YESTERDAY的 SHELL SCRIPTS 比较长,LINUX下就简单得多。
主SCRIPT.:
LogBak.sh
#! /usr/bin/sh
DIR=/home/smmon/bin/
day=`date --date=yesterday|awk '{ print $3 }'`
mon=`date --date=yesterday|awk '{ print $2 }'`
FileDir=`date +%y%m --date=yesterday`
YESTERDAY=`date +%F --date=yesterday`
if [ $day -eq "1" ];then
echo "mkdir -p /data/logbak/$FileDir" | ssh 10.192.130.130
fi
if [ $day -lt 10 ];then
MON_DAY=`echo "$mon $day"`
else
MON_DAY=`echo "$mon $day"`
fi
echo s/condition/"$MON_DAY"/g > ${DIR}script_file
echo s/yesterday/${YESTERDAY}/g >> ${DIR}script_file
echo s/filedir/${FileDir}/g >> ${DIR}script_file
sed -f ${DIR}script_file ${DIR}ftptemp.sh
r=`cat ${DIR}host_list`
for IP in $r
do
cat ${DIR}ftptemp.sh | ssh $IP
done
FTP SCRIPT.:
FTPSERV=xxxx
CON_STR="use password"
HOST=`hostname`
PLATFORM=`uname`
if [ $PLATFORM. = "Linux" ];then
grep "condition" /var/log/messages > /home/smmon/message.yesterday
(echo "open $FTPSERV
user $CON_STR
bin
prompt
cd /data/logbak/filedir
lcd /home/smmon
put message.yesterday yesterday.$HOST.log
close")|ftp -i -n
rm /home/smmon/message.yesterday
elif [ $PLATFORM. = "HP-UX" ];then
grep "condition" /var/adm/syslog/syslog.log > /home/smmon/syslog.yesterday
(echo "open $FTPSERV
user $CON_STR
bin
prompt
cd /data/logbak/filedir
lcd /home/smmon
put syslog.yesterday yesterday.$HOST.log
close")|ftp -i -n
rm /home/smmon/syslog.yesterday
else
exit
fi
ftptemp.sh
script_file