在LINUX上,我们可以很方便的使用scp命令来远程拷贝文件,但是由于scp命令本身无保存密码选项,所以在shell里面无法像samba那样子保存密码,比较麻烦,下面介绍下两种实现方法。
方法一:
scp 远程拷文件,建议用搭配 ssh 方法:
1: 在客户机上生成 ssh 需要的 rsa 密钥: ssh-keygen -t rsa
2: 把生成的 id_rsa.pub拷到远程服务器用户的 .ssh 目录下,并更名为authorized_keys
这样一来,scp 拷文件就不需要密码了
方法二:
#!/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;"
如果不设置timeout的话会自动退出,所以必须设置,或者用default字段可以设置expect超时或退出时的动作。