1.expect是什么,在什么情况下使用
执行shell脚本的时候,有时会有交互步骤,必须输入指令才能继续往下执行,expect脚本可以自己判断在某些情况下输入某些命令,这样就可以实现脚本全自动化。
2.expect基本语法
expect主要有四个命令:
spawn:启动执行命令或脚本
expect:从进程中获取字符串
send:根据expect获取的字符串,向进程发送一个字符串
interact:退出自动化,允许用户交互。
3.expect实例
#!/usr/tcl/bin/expect
set timeout 30
set host "101.200.241.109"
set username "root"
set password "123456"
spawn ssh $username@$host
expect "*password*" {send "$password\r"}
interact
#!/usr/tcl/bin/expect:使用expect来解释脚本
set timeout 30:设置超时时间,单位秒,默认10
set host "101.200.241.109":设置变量
spawn ssh $username@$host:spawn是expect的内部命令,只有在进入expect环境才可执行,在默认的shell环境下不识别此命令,用于给要执行的命令加个交互模式,使得之后的运行可以进行自动化交互
expect "*password*":expect是expect的内部命令,用来从进程中获取和匹配指定的字符串,若匹配到则进行交互,一般和send配合使用;若没有匹配到,则继续匹配,但超时时间到的话则自动交互。
send "$password\r":当expect匹配到字符串时,就进行交互,发送字符串给进程。
interact:进程执行完之后,保持交互状态,退出自动,将控制交给控制台,用户就可手动交互。