用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 eof
copy_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
好了,就这样吧.
评论: