背景:
scp /areweb_sxsky_db_test.sql root@192.168.3.239:/root执行命令的时候需要输入密码,不满足自动化程序脚本,故将密码硬编码在sh脚本中使用expect命令,(存在安全风险,自行评估风险)
需求 将192.168.3.213服务器文件 远程备份至192.168.3.239服务器
A服务器 192.168.3.213服务器
B服务器192.168.3.239服务器
解决办法
安装expect
yum install expect
创建sh脚本
#!/bin/bash
expect -c "
spawn scp /areweb_sxsky_db_test.sql root@192.168.3.239:/root
expect {
\"yes/no\" {send \"yes\r\";exp_continue;}
\"*password\" {set timeout 500;send \"1\r\";}
}
expect eof"
名词解释
spawn: 是开一个新的进程去执行后面的命令
expect: 是获取spawn命令执行后的信息,看看是否和其事先指定的相匹配,如果匹配就会执行后面的内容。如果单独写expect不写spawn,就不会触发。
send: 发送指定的字符给系统。
exp_continue: 是让expect继续往下匹配。
eof: 关键字用于匹配结束符。