1 日志备份脚本ziplog.sh
#!/bin/bash
#
# bankup log file to 10.163.9.224 into /data
#
year=`date +'%Y'`
log_dir=("/var/log/ygtoo/ask_qsa/$year" "/var/log/ygtoo/request/$year" "/var/log/ygtoo/sch_qsa/$year" "/var/log/ygtoo/smscode/$year" '/data/qas/logs')
#log_dir=('/data/test')
today=`date +'%Y-%m-%d'`
for dir in ${log_dir[*]}
do
#check $dir
[ ! -d $dir ] && continue
cd $dir
#echo "$dir\r\n"
for line in $(ls $dir)
do
modify=`stat $line | grep 'Modify' | awk '{print $2}'`
bak_dir=`echo $modify | awk -F '-' '{print $1$2}'`
#echo "$line\r\n"
mkdir -p $bak_dir
echo "mkdir -p $dir/$bak_dir"
if [ -f $line ] && [ "$modify" != "$today" ]
then
echo "zip -r $dir/$bak_dir/$line'.zip' $dir/$line"
zip -r $bak_dir/$line'.zip' $line
echo "rm -f $line"
rm -f $line
project=`echo $dir|awk -F '/' '{print $3}'`
if [ "$project" = "log" ]
then
p=`echo $dir|awk -F '/' '{print $5}'`
scp_dir=$project/$p
else
scp_dir=$project
fi
echo "scp -r $bak_dir root@10.163.9.224:/data/$scp_dir"
echo "auto scp by expect"
/scripts/expect.scp.sh 10.163.9.224 root Root1234 $bak_dir /data/$scp_dir
fi
echo "rm -rf $bak_dir"
rm -rf $bak_dir
done
done
#
# bankup log file to 10.163.9.224 into /data
#
year=`date +'%Y'`
log_dir=("/var/log/ygtoo/ask_qsa/$year" "/var/log/ygtoo/request/$year" "/var/log/ygtoo/sch_qsa/$year" "/var/log/ygtoo/smscode/$year" '/data/qas/logs')
#log_dir=('/data/test')
today=`date +'%Y-%m-%d'`
for dir in ${log_dir[*]}
do
#check $dir
[ ! -d $dir ] && continue
cd $dir
#echo "$dir\r\n"
for line in $(ls $dir)
do
modify=`stat $line | grep 'Modify' | awk '{print $2}'`
bak_dir=`echo $modify | awk -F '-' '{print $1$2}'`
#echo "$line\r\n"
mkdir -p $bak_dir
echo "mkdir -p $dir/$bak_dir"
if [ -f $line ] && [ "$modify" != "$today" ]
then
echo "zip -r $dir/$bak_dir/$line'.zip' $dir/$line"
zip -r $bak_dir/$line'.zip' $line
echo "rm -f $line"
rm -f $line
project=`echo $dir|awk -F '/' '{print $3}'`
if [ "$project" = "log" ]
then
p=`echo $dir|awk -F '/' '{print $5}'`
scp_dir=$project/$p
else
scp_dir=$project
fi
echo "scp -r $bak_dir root@10.163.9.224:/data/$scp_dir"
echo "auto scp by expect"
/scripts/expect.scp.sh 10.163.9.224 root Root1234 $bak_dir /data/$scp_dir
fi
echo "rm -rf $bak_dir"
rm -rf $bak_dir
done
done
2 安装expect
expect是一个代替用户远程登录,并完成自动交互的工具
安装
yum install expect
3 scp自动上传脚本expect.scp.sh
#!/usr/bin/expect
set timeout 10
set host [lindex $argv 0]
set username [lindex $argv 1]
set password [lindex $argv 2]
set src_file [lindex $argv 3]
set dest_file [lindex $argv 4]
spawn scp -r $src_file $username@$host:$dest_file
expect {
"(yes/no)?" { send "yes\r"; exp_continue }
"password:" { send "$password\r" }
}
expect "100%"
expect eof
set timeout 10
set host [lindex $argv 0]
set username [lindex $argv 1]
set password [lindex $argv 2]
set src_file [lindex $argv 3]
set dest_file [lindex $argv 4]
spawn scp -r $src_file $username@$host:$dest_file
expect {
"(yes/no)?" { send "yes\r"; exp_continue }
"password:" { send "$password\r" }
}
expect "100%"
expect eof
转载请注明:小Y » 日志备份与expect scp自动上传