用expect不用输密码自动scp数据(续)
在上一篇用expect不用输密码自动scp数据中,给大家讲了怎么使用expect自动把数据拷到本地来,但今天公司要求既要原来每周自动down数据回来,又要在手动去down数据的时候是服务器上最新备份的,好吧,为了满足这样的要求,我在原脚本上做了一些修改.
手动down数据脚本:
copy_newfile.sh脚本内容:
思路解说:也就是让脚本先登录到服务器,执行下copy_newfile.sh脚本,把最新的备份筛选出来,然后再自动down到本地.
很简单吧,这里再说次要安装expect,使用下面命令:
yum -y install expect
好了,就这样吧.
手动down数据脚本:
#!/usr/bin/expect -f
set timeout -1
set passwd passwd
spawn ssh -p18330 root@72.11.x.x
expect {
"yes/no" { send "yes\r";exp_continue }
"password:" { send "$passwd\r" }
}
expect "*#*" { send "sh /root/soft_shell/copy_newfile.sh\r" }
spawn scp -r -P18330 root@72.11.x.x:/root/newfile/* /root/sqlbak/
match_max 100000
expect "*assword*" { send "$passwd\r"}
expect eofcopy_newfile.sh脚本内容:
#!/bin/bash
location="/root/sqlbak/"
newfile="/root/newfile"
old_file='/root/newfile'
rm -f ${old_file}/*
file=$(find $location -type f -mtime -1)
\cp $file $newfile思路解说:也就是让脚本先登录到服务器,执行下copy_newfile.sh脚本,把最新的备份筛选出来,然后再自动down到本地.
很简单吧,这里再说次要安装expect,使用下面命令:
yum -y install expect
好了,就这样吧.


评论: