您的位置:首页 > 其它

sync,ssh,expect配合使用备份不需要输入密码

2012-06-08 15:49 344 查看
rsync备份非常的方便,只要安装一下就可以,都不要配置什么就可以了使用了。但是用久了就起更偷懒了。怎么样才能使用rsync不要输入密码呢?

网上方法很多,说得最多的就是ssh-keygen非常的方便。但是我用起来感觉很不方便,好像只能有一个只能密码配置文件。就找找其他方法。

expect,需要安装,在centos5.4上面安装很方便

yum install expect

一下就装好了,可以which expect 看看是不是在/usr/bin/expect,这是一个交互式的脚本。可以自动进行交互。好啊!

简单的事例,将/tmp/123下面的文件与111.222.3.1服务器上的/tmp/123同步(远端服务器同步本地)

#!/bin/bash

expect -c ”

set timeout 1200;

spawn /scp.sh #需要运行的程序,也可以是脚本

expect {

“*yes/no*” {send “yesr”; exp_continue}

“*password*” {send “111@@@111r“;} #111@@@111 代表的是111.22.3.1服务器的密码

}

expect eof;”

再看看/scp.sh

/usr/bin/rsync -avzp –delete -e ‘ssh -p 12222′ /tmp/123/ rsync-sl@111.22.3.1:/tmp/123

ssh端口是12222,如果您不是,请将您的ssh连接端口改成10000以上,并在此修改成正确的。

rsync-sl 这是rsync授权用户。在添加的时候,可以直接使用useradd -g rsync rsync-sl 直接加到rsync组里

查看111.22.3.1里面/tmp/123的目录的权限,要求是rsync:rsync-sl,这样没有问题

特别补充:

“*password*” {send “111@@@111r“;} #111@@@111 代表的是111.22.3.1服务器的密码

这里面的密码,如果有一些字符如$ 等可能会有问题,需要进行转义。如果您的密码是 123$abc,那么上面必须填入

123u0024abc

点的转义:. ==> u002E

美元符号的转义:$ ==> u0024

乘方符号的转义:^ ==> u005E

左大括号的转义:{ ==> u007B

左方括号的转义:[ ==> u005B

左圆括号的转义:( ==> u0028

竖线的转义:| ==> u007C

右圆括号的转义:) ==> u0029

星号的转义:* ==> u002A

加号的转义:+ ==> u002B

问号的转义:? ==> u003F

反斜杠的转义: ==> u005C
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: