Shell脚本入门(六)
expect
spawn 交互程序开始后面跟命令或者指定程序
expect 获取匹配信息匹配成功则执行expect后面的程序动作
send exp_send 用于发送指定的字符串信息
exp_continue 在expect中多次匹配就需要用到
send_user 用来打印输出 相当于shell中的echo
exit 退出expect脚本
eof expect 执行结束 退出
set 定义变量
puts 输出变量
set timeout 设置超时时间
安装expect
yum -y install expect
expect是一个自动化交互套件,主要应用于执行命令和程序时,系统以交互形式要求输入指定字符串,实现交互通信。
expect自动交互流程:
spawn启动指定进程---expect获取指定关键字---send向指定程序发送指定字符---执行完成退出.
注意该脚本能够执行的前提是安装了expect
#!/usr/bin/bash
passwd='1'
/usr/bin/expect << EOF
set time 30
spawn ssh neko@192.168.116.129 df -Th
expect {
"*yes/no" { send "yes\r"; exp_continue }
"*password:" { send "$passwd\r" }
}
expect eof
EOF
#!/usr/bin/bash
get_keygen (){
/usr/bin/expect <<-EOF &>/dev/null
spawn ssh-keygen
expect {
".ssh/id_rsa" { send "\n" ; exp_continue }
"Overwrite" { send "y\n" ; exp_continue }
"no passphrase" { send "\n" ; exp_continue }
"again" { sen