两台可访问服务器之间相互拷贝文件可以使用scp (具体命令这里就不介绍了)但是都是需要人工输入密码镜像人机交互的。在很多时候为了避免交互式操作,有两种办法:
1 ssh设置免密登录。
这种方式虽然可以免密登录和交互,但是不是绝对的免交互。在前期准备的时候还是需要人工参与创建公钥发送公钥到对方服务器等等。
2 用expect 脚本
前提:安装expect 安装包
案例1 scp 远程拷贝文件如下:
#!/usr/bin/expect -f
#
#
#
spawn scp -P 22 root@oracle-master:/usr/oracle/product/12c/db_1/dbs/orapworcl /opt/database/
expect {
"(yes/no)?"
{
send "yes\n"
expect "password:" { send "root\n" }
}
# 上面是第一次登录会提示是否允许,send yes,
# 下面是非第一次提示,直接发送密码
"password:"
{
send "root\n"
}
}
expect eof
运行:/usr/bin/expect XXX.expect
案例2 非交互式修改用户密码: