目录
Shell Here Document(内嵌文档/嵌入文档)
❀expect命令运用于bash❀
功能说明:expect是一款自动化的脚本解释型的工具。
(ps.expect基于tcl脚本,expect脚本的运行需要tcl的支持。expect对一些需要交互输入的命令很有帮助,比如ssh ftp scp telnet。远程登录linux服务器的时候,ssh命令需要手工输入密码,当登录多台机器的时候就会非常繁琐。expect就可以根据设定的规则,自动帮我们输入密码,大大节省了时间。在shell脚本中使用expect命令可以实现自动化交互式操作,例如自动登录远程服务器、自动执行命令等。)
expect使用原理
spawn启动指定进程—expect获取指定关键字—send向指定程序发送指定字符—执行完成退出。
expet使用场景
①并根据预定标准回答其问题,回答“是”、“否”或将控制权交还给您
②远程连接设备并执行自动化操作
③主要是一些需要人机交互的地方,如果提前知道应该输入什么指令都可以使用expect 工具
常用的expect命令选项
spawn:启动一个新的进程,并将其与当前进程进行交互。
expect:等待特定的字符串或正则表达式出现,并执行相应的操作。
send:向进程发送字符串,并将该参数发送到进程,这个过程类似模拟人类输入密码。
interact:允许用户与进程进行交互,interact命令可以在适当的时候进行任务的干预,比如下载完ftp文件时,仍然可以停留在ftp命令行状态,以便手动的执行后续命令。
exp_continue:允许expect继续向下执行指令,在expect中多次匹配就需要用到。
exit:退出expect脚本。
eof:expect执行结束,退出。
set:设置变量。
puts:输出变量。
Timeout:指定超时时间,set timeout n,过期则继续执行后续指令 ,设置超时时间,表示该脚本代码需在n秒钟内完成,如果超过,则退出。timeout -1为永不超时,用来防止ssh远程主机网络不可达时卡住及在远程主机执行命令宕住。默认情况下,timeout是10秒。
send_user :回显命令,相当于echo。
$argv参数数组:Expect脚本可以接受从bash传递的参数</