linux中expect不用输密码自动下载数据备份(新)

这里先说下脚本的实现过程:
1.先在服务器上把备份自动打包到一个web目录下(当然这个web目录其他人无法访问到的),好让脚本去下载.
2.在本地服务器把备份包下载下来,进行解压然后拷贝到专门的备份目录里.
3.当上面两步都完成了,我们就要把服务器上那个备份包删除,避免泄露.

下面是脚本:
1.这个是在服务器上把最新备份筛选出来,并把最新备份打包到web目录:
cat copy_bakfile.sh

 代码如下 复制代码

#!/bin/bash
location="/root/sqlbak/"
newfile="/root/newfile"
file='/root/newfile'
web="/var/www/vhosts/wwwroot/phpmyadmin"
rm -f ${file}/*
#file=$(find $location -type f -mtime -1)
file=$(find $location -type f -mmin -60)
cp $file $newfile
sleep 3
ls -l $newfile |awk '{print $9}'|xargs tar -C $newfile/ -czf $web/bak.tar.gz

2.这是下载备份包脚本(先连到服务器上执行copy_bakfile.sh把最新备份筛选出来,并打包到web目录,并把打包好的bak.tar.gz下载到本地)
cat down.exp

 代码如下 复制代码

#!/usr/bin/expect -f
set timeout -1
set passwd PASSWORD
spawn ssh -p18330 root@124.248.xxx.xxx
expect {
"yes/no" { send "yesr";exp_continue }
"password:" { send "$passwdr" }
}
expect "*#*" { send "sh /root/soft_shell/copy_bakfile.shr" }
expect "*#*" { send "exitr" }
spawn axel -q http://blog.slogra.com/bak.tar.gz -o /root/sqlbak/
expect eof

3.这是解压备份包脚本
cat process.sh

 代码如下 复制代码

#!/bin/bash
pid=`ps -C axel --no-header|wc -l`
file=`find /root/sqlbak/ -name bak.tar.gz.st|wc -l`
list="/root/sqlbak"
newfile="/data/onlinesqlbak"
date="`date '+%Y-%m-%d %H:%M:%S'`"
if [[ $pid -eq 0 ]] || [[ $file -eq 0 ]];then
expect /root/soft_shell/delbak.exp
#tar zxf $list/*
tar zxf $list/* -C $newfile/
sleep 10
rm -f $list/bak.*
#for i in $list/*;do cp -r $i $newfile/;done
#sleep 1
#rm -f $list/*.gz
else
echo "$date | load download....." >>/root/processlog.txt
fi

s:相信大家都知道怎么确认是否有下载完,这个脚本就起到检查down.exp是否有下载完,确认下载完了才解压bak.tar.gz,并把解压出来的拷贝到专门的备份目录里,并执行删除脚本去删除服务器上web目录里的bak.tar.gz包.

4.这是删除服务器上bak.tar.gz包的脚本
cat delbak.exp

 代码如下 复制代码

#!/usr/bin/expect -f
set timeout -1
set passwd PASSWORD
spawn ssh -p18330 root@124.248.xxx.xxx
expect {
"yes/no" { send "yesr";exp_continue }
"password:" { send "$passwdr" }
}
expect "*#*" { send "rm -f /var/www/vhosts/wwwroot/phpmyadmin/bak.tar.gzr" }
expect "*#*" { send "exitr" }
expect eof

最后说一句,要使用上面这几个脚本,记得先安装axel和expect这两个工具,不然你是无法把备份包down下来的.

原文来自:http://blog.slogra.com/post-517.html

时间: 2024-09-19 03:16:20

linux中expect不用输密码自动下载数据备份(新)的相关文章

linux用expect不用输密码自动scp数据

把一台服务器上的备份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/

expect不用输密码自动scp数据

 今天公司要求把一台服务器上的备份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/*

Linux中svn提交文件后自动同步更新到网站目录

 下面来为各位介绍Linux中svn提交文件后自动同步更新到网站目录希望文章对各位有帮助.     有时,对于多文件需要上传到服务器的时候将会很麻烦,但是如果使用svn的钩子脚本就容易实现本地提交svn后,自动同步代码文件到远程服务器的网站目录下,而不必手动上传了. 首先,在网站目录下checkout代码,例如我的目录是/data/www/test svn co https://127.0.0.1/test/trunk/ /data/www/test/ 注意,这是因为有时我会在服务器上直接修改代

Linux中让用户的密码必须有一定的长度,并且符合复杂度?

Linux中让用户的密码必须有一定的长度,并且符合复杂度? 出于安全的考虑,我们在建立用户或是对用户进行管理的时候,对于密码的设置往往有一定的严格要求,过于简单的密码会对系统产生http://www.aliyun.com/zixun/aggregation/11233.html">安全隐患,所以我们可以通过一些规则来实现强制要求输入复杂的密码. 操作如下: 修改PASS_MIN_LEN的长度即可 [root@localhost software]# vi /etc/login.defs #

Linux中利用两个现存文件,生成一个新的文件

Linux中利用两个现存文件,生成一个新的文件的方法 前提条件:每个文件中不得有重复行 1. 取出两个文件的并集(重复的行只保留一份) cat file1 file2 | sort | uniq 2. 取出两个文件的交集(只留下同时存在于两个文件中的文件) cat file1 file2 | sort | uniq -d 3. 删除交集,留下其他的行 cat file1 file2 | sort | uniq –u

服务器-请问如何在linux中利用springmv提供一个树结构的数据

问题描述 请问如何在linux中利用springmv提供一个树结构的数据 利用该数据完成一个jquery树插件,要求树的数据在服务器端提供缓存功能!

如何在 Linux 中使用 sFTP 上传或下载文件与文件夹

sFTP(安全文件传输程序)是一种安全的交互式文件传输程序,其工作方式与 FTP(文件传输协议)类似. 然而,sFTP 比 FTP 更安全:它通过加密 SSH 传输处理所有操作. 它可以配置使用几个有用的 SSH 功能,如公钥认证和压缩. 它连接并登录到指定的远程机器,然后切换到交互式命令模式,在该模式下用户可以执行各种命令. 在本文中,我们将向你展示如何使用 sFTP 上传/下载整个目录(包括其子目录和子文件). 如何在 Linux 中使用 sFTP 传输文件/文件夹 默认情况下,SFTP 协

linux中rsync异步服务器实现文件同步与备份

  Rsync 非常适合在两台机器之间快速同步大型.复杂的目录,例如论坛的附件目录.再配合 ssh ,则安全性也有保证,且可以利用 ssh public key 和 cron 来进行自动定时同步. 说明:两台机器分别为 localhost 和 remotehost ;用户分别为 localuser 和 remoteuser. 环境:FreeBSD 4.9 和 FreeBSD 6.1  代码如下   设置 ssh public key 认证 $ssh-keygen -t dsa -b 2048 生

linux中expect实现自动登录的例子

使用expect实现简单自动登录,从网上看了几个脚本不错,借鉴一下 NO.1 #!/bin/sh auto_login_ssh(){ expect -c " set timeout -1; spawn -noecho ssh -o StrictHostKeyChecking=no $2 ${@:3}; expect *assword:*; send -- $1\r; interact;" } auto_login_ssh password user@hostname StrictHos