日志备份与expect scp自动上传

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

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

转载请注明:小Y » 日志备份与expect scp自动上传

赞 (0) 评论 (0) 分享 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址