把一台服务器上的备份sql文件都传到公司本地服务器上,但公司本地服务器上做了key验证的,也就是说要用key才能登录本地服务器,还有外网的那台服务器没有做key验证,好吧,那就直接从那台服务器上把数据拖到本地服务器上吧.
脚本如下:
vi down.exp
代码如下 | 复制代码 |
#!/usr/bin/expect -f set timeout -1 set passwd 你的密码 spawn scp -r -P18330 root@72.11.x.x:/root/newfile/* /root/bak/ match_max 100000 expect -exact "password:" send -- "$passwdr" expect eof |
执行方式如下:
代码如下 | 复制代码 |
chmod +x down.exp expect down.exp |
这样就可以不用输入密码,就把公网服务器上的备份数据拷到本地服务器上来.
ps:要安装expect
centos直接yum -y install expect
在这个基于上我需要今天公司要求既要原来每周自动down数据回来,又要在手动去down数据的时候是服务器上最新备份的,好吧,为了满足这样的要求,我在原脚本上做了一些修改.
手动down数据脚本:
代码如下 | 复制代码 |
#!/usr/bin/expect -f set timeout -1 set passwd passwd spawn ssh -p18330 root@72.11.x.x expect { "yes/no" { send "yesr";exp_continue } "password:" { send "$passwdr" } } expect "*#*" { send "sh /root/soft_shell/copy_newfile.shr" } spawn scp -r -P18330 root@72.11.x.x:/root/newfile/* /root/sqlbak/ match_max 100000 expect "*assword*" { send "$passwdr"} 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 |
好了,就这样吧
时间: 2024-09-11 12:18:15