在LINUX上,咱们能够很方便的使用scp命令来远程拷贝文件,可是因为scp命令自己无保存密码选项,因此在shell里面没法像samba那样子保存密码,比较麻烦,下面介绍下两种实现方法。
shell
方法一:bash
ssh公私钥认证ssh
方法二:ide
expect(expect - programmed dialogue with interactive programs, Version 5)实现spa
默认安装,须要手动安装expect包:yum -y install expect expect-devel
it
#!/bin/bash
expect -c "
set timeout 1200; ##设置拷贝的时间,根据目录大小决定,我这里是1200秒。
spawn /usr/bin/scp -r 192.168.0.201:/work/backup/db_back/ /work/dbback/
expect {
\"*yes/no*\" {send \"yes\r\"; exp_continue}
\"*password*\" {send \"123456\r\";} ##远程IP的密码。
}
expect eof;"io
若是不设置timeout的话会自动退出,因此必须设置,或者用default字段能够设置expect超时或退出时的动做。class