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/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

linux用expect不用输密码自动scp数据的相关文章

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中expect不用输密码自动下载数据备份(新)

这里先说下脚本的实现过程: 1.先在服务器上把备份自动打包到一个web目录下(当然这个web目录其他人无法访问到的),好让脚本去下载. 2.在本地服务器把备份包下载下来,进行解压然后拷贝到专门的备份目录里. 3.当上面两步都完成了,我们就要把服务器上那个备份包删除,避免泄露. 下面是脚本: 1.这个是在服务器上把最新备份筛选出来,并把最新备份打包到web目录: cat copy_bakfile.sh  代码如下 复制代码 #!/bin/bash location="/root/sqlbak/&q

Win8.1直接进系统不用输密码登录的方法

  当我们升级到Win8或者升级到win8.1,每次开机都要输入登陆密码,这一设置对绝大部分安全意识差的同学是很有帮助的!能很好的保护隐私,避免别人乱搞你的电脑!但对另一部分同学来说,那是真的太麻烦了,下面小编就给大家分享一个简单快捷的取消win8.1开机登录密码的方法. 1.先登陆Win8.1系统,然后利用快捷键Win键(Win键就是键盘左下角的window图标)+Q键打开搜索栏. 2.在搜索栏里面输入"netplwiz"选择在应用里的netplwiz程序并点击"回车&qu

Windows 7和WinXP实现不输密码自动登录的方法

在Win7或者WinXP下,如果用户设置了密码,每次登陆都要输入,很麻烦.如何能够无需输入密码自动登录Win7或者WinXP系统呢?下面就介绍这个方法: 1.在开始菜单搜索框输入"rundll32 netplwiz.dll,UsersRunDll"(Windows7下可以输入"netplwiz")按回车,打开高级用户控制面板; 2.在高级用户控制面板中,取消对"要使用本机,用户需输入用户名和密码(E)"项的勾选; 3.系统将弹出窗口要求输入默认登

再也不用输密码!Android使用指纹登陆应用

我们无需再费尽心力地去记忆冗长的密码了,手机操作系统Android引入原生指纹识别功能. 与输入冗长的密码相比,使用搭配TouchID功能的iOS设备用户已经体验到指纹识别的便捷.它不仅更为快捷,而且更为安全. 指纹识别功能要求设备上安装指纹传感器,但是目前很多安卓设备还没有安装指纹传感器.三星Galaxy Note 4.S6/S6 Edge以及HTC One Max都在仔细考虑,可能很快就会出现改变. 谷歌最初曾设想在Nexus 6上安装指纹传感器,但由于没有一流供应商支持,谷歌最后只能放弃.

怎么设置ipad appstore应用商店下载APP不用输密码

我们在ipad中点击"设置"进入设置列表之后找到"iTunes store 与app store"点击它打开进入 然后我们在打开进入到的iTunes store 与app store界面中找到"密码设置(password settings)" 之后点击打开进入 开启"require password"选项即可 好了现在我们去试一下打开appstore看看是不是不需要输入密码了, 注意:这样设置好之后我们的如果家里有小朋友那么估

linux shell脚本问题,关于自动修改系统密码

问题描述 linux shell脚本问题,关于自动修改系统密码 操作系统 radhat 就是多个服务器每天就要进行一次密码修改,所以在想能不能用shell写一个命令脚本,然后放在一台服务器上面,等到需要修改密码的时候,就修改脚本里面的日期参数进行跑脚本修改,求大神帮助,新手,也可沾些代码我学习一下,不适合的地方,我自己改改. 解决方案 用crontabhttp://www.cnblogs.com/kaituorensheng/p/4494321.htmlhttp://os.51cto.com/a

不输密码照样登陆操作系统

Q:请问能不能不输密码,直接来登录Windows 2003系统呢? A:很简单,通过移花接木就可以做到.先到Windows XP系统下,通过文件查找的方式,找到nusrmgr.cpl文件,在默认状态下,该文件存放在Windows XP安装目录system32中:将该文件复制并粘贴到Windows 2003安装目录的system32文件夹中,然后打开Windows 2003的控制面板,你会发现其中多了"用户帐户"这一选项,也可直接双击运行nusrmgr.cpl,打开"用户帐户&

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

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