exp命令linux linux exec 命令

Linux expectexpect:expect是Unix系统中用来进行自动化控制和测试的脚本工具 , 常用于实现交互式任务的自动化 。使用命令”dnf install expect -y”进行安装 。脚本文件声明为”#!/usr/bin/expect” 。
expect常用命令如下:
1.spawn+交互命令(如spawn ssh root@192.168.1.1):”spawn”是expect的初始命令,用于启动一个新的交互进程 , 之后所有的操作都会在这个进程中进行 。
2.set:定义变量/为变量赋值 。使用语法:set 变量名 值 。
3.puts:将变量值/字符串定向到本地标准输出文件(即定位到屏幕) 。使用语法:puts “字符串/$变量名”
4.send_user:作用和使用方法类似于”puts”,区别在于”puts”会在输出内容的结尾自动追加一个换行符,而”send_user”不会 。
5.send:向交互进程发送信息/命令(字符串和一些特殊符号,\r—回车,\n—换行 , \t—制表符) 。使用语法:send “信息/命令[\r]” 。
6.[lindex $argv 数字]:表示外部传递参数的值,数字是n,就表示第n-1个参数 。注:$argc表示外部传递参数的个数 , 也是一个值 。
7.expect+字符串+{ 命令 }:将字符串与交换进程接收到的信息进行匹配 。如果匹配成功(字符串是交换进程接收到的信息的一部分),执行包含在”{}”中的命令;如果匹配失败,不执行包含在”{}”中的命令 。该命令有三种使用方法:
第一种:单分支模式
①expect 字符串 { 命令 }
解释:如果字符串与交换进程接收到的信息匹配成功,执行包含在”{}”中的命令,并结束该expect命令;如果字符串与交换进程接收到的信息匹配失败,timeout秒后结束该expect命令 。(注:脚本执行到expect命令时,计时器就开始计时 , 并会在计时器超时前不断对交换进程接收到的信息进行扫描,尝试字符串与信息的匹配 。)
②expect {
字符串{ 命令 }
timeout { 命令 }
}
解释:如果字符串与交换进程接收到的信息匹配成功,执行包含在”{}”中的命令,并结束该expect命令;如果字符串与交换进程接收到的信息匹配失败,timeout秒后执行包含在”{}”中的命令,之后结束该expect命令 。(注:脚本执行到expect命令时,计时器就开始计时,并会在计时器超时前不断对交换进程接收到的信息进行扫描 , 尝试字符串与信息的匹配 。)
第二种:多分支模式
①expect {
字符串1 { 命令 }
字符串2 { 命令 }
}
解释:如果字符串1与交换进程接收到的信息匹配成功,执行执行包含在”{}”中的命令 , 并结束该expect命令;如果字符串1与交换进程接收到的信息匹配失败、字符串2与交换进程接收到的信息匹配成功,执行包含在”{}”中的命令,并结束该expect命令;如果字符串1、字符串2皆与交换进程接收到的信息匹配失败 , timeout秒后结束该expect命令 。(注:脚本执行到expect命令时,计时器就开始计时 , 并会在计时器超时前不断对交换进程接收到的信息进行扫描,尝试字符串与信息的匹配 。)
②expect {
字符串1 { 命令 }
字符串2 { 命令 }
timeout { 命令 }
}
解释:如果字符串1与交换进程接收到的信息匹配成功,执行执行包含在”{}”中的命令 , 并结束该expect命令;如果字符串1与交换进程接收到的信息匹配失败、字符串2与交换进程接收到的信息匹配成功,执行执行包含在”{}”中的命令 , 并结束该expect命令;如果字符串1、字符串2皆与交换进程接收到的信息匹配失败,timeout秒后执行包含在”{}”中的命令,之后结束该expect命令 。(注:脚本执行到expect命令时,计时器就开始计时 , 并会在计时器超时前不断对交换进程接收到的信息进行扫描,尝试字符串与信息的匹配 。)

推荐阅读