一、expect介绍
expect命令是基于tcl的,主要用于自动化交互式的处理。
expect表示期望,如果服务端期望输入验证信息,比如密码等都可以通过expect来发送
二、expect使用
#定义一个函数封装expect操作
expectFun(){
# usage: expect [-div] [-c cmds] [[-f] cmdfile] [args]
# -c表示多名了,需要用" ..."括起来,注意:第一个" 必须要在-c之后,不能够换行
expect -c "
set timeout -1
spawn $1
# 多种期望情况,比如第一次ssh,需要发送yes;
# 注意:expect 和 { 中间有空格
expect {
*(yes/no)* {send -- yes\r;exp_continue}
*(y/n)* {send -- y\r;exp_continue}
*assword:* {send -- $2\r;exp_continue}
*.ssh/id_* {send -- \r;exp_continue}
*passphrase* {send -- $2\r;exp_continue}
*same passphrase* {send -- $2\r;exp_continue}
# 后面继续追加即可
eof {exit 0}
}"
}
expectFun "scp /etc/hosts 192.168.0.1:/etc/" "123456"
三、expect 安装
有时候expct还没有安装,比如mini版本。
yum install -y expect