目录

一、Here Document 免交互

1.1Here Document 概述

1.2 Here Document 常用方法

1.2.1 变量设定

 1.2.2 注释内容

二、Expect

2.1概述

2.2 基本命令

2.3 Expect语法

2.3.1 单分支语法

2.3.2多分支语法

2.4 用Expect去编写脚本

2.4.1 脚本编写

2.4.2 定义引用变量

总结


一、Here Document 免交互

Here Document 是一个文件文字,是源代码文件的一部分。主要用于保留换行符和文本中其他空格的多行字符串文字形式。

1.1Here Document 概述

格式:

命令 << 标记 (自定义)

内容

标记(表示结束)

例:

把内容保存到文件中

1.2 Here Document 常用方法

先发起,交代动作命令,然后免交互输入的值

read命令接收输入并打印

1.2.1 变量设定

在写入文件时会先将变量替换成实际值,在去用cat命令写入

关闭变量的替换

 1.2.2 注释内容

bash中的默认注释是# 只能注释一行的内容,而在Here Document中“:”可以去注释中间所有的内容。

格式:

:<< EOF

内容

EOF

例:

输出的结果只会是最后echo的shanghai,here document中内容不会被显示出

二、Expect

2.1概述

建立在基础语言工具之上的工具

用于进行自动化控制和测试

解决shell脚本中交互的相关问题

2.2 基本命令

①spawn

spawn 后通常跟一个Linux的命令,用来开启一个会话或者启动个进程

②expect

判断上次输出的结果是否包含指定的字符串,如果有立即返回,否则就等待超时后返回

③send

向进程发送字符串,用于模拟用户的输入命令一般后面要加上\r来表示回车

④结束符:

expect eof

表示交互结束,等待执行结束,退回到原用户,与spawn对应。

interact

执行完成后保持交互状态,把控制权交给控制台,会停留在目标终端而不会退回到原终端,这个时

候就可以手工操作了,interact后的命令不起作用,比如interact后添加exit,并不会退出root用户。

而如果没有interact则登录完成后会退出,而不是留在远程终端上。

⑤set

通过set命令可以设置会话的超时时间,若不限制超时时间则应设置为-1

set timeout 30

⑥exp_continue

exp_ continue附加于某个expect 判断项之后,可以使该项被匹配后,还能继续匹配该expect 判断

语句内的其他项。exp_ continue类似于控制语句中的continue 语句。表示允许expect 继续向下执

行指令。

比如:

expect {
       " (yes/no)"  {send "yes\r";  exp_ continue;}
       "*password"  {set timeout 300;  send  "abc123\r";}
}

如果匹配到yes/no则输出yes,如果匹配到password 则输出abc123并结束语句

⑦send_user

表示回显命令,相当于echo

2.3 Expect语法

2.3.1 单分支语法

expect “password:” {send “123456\r”}

2.3.2多分支语法

expect{

“www” {send “WWW\r”}

"qq"{send "QQ\r"}

}

只要匹配到其中的任何一个就会去执行后面send语句

2.4 用Expect去编写脚本

2.4.1 脚本编写

①无交互登录到远程服务器

 

②在对方机器上操作

 expect eof意味着结束expect

2.4.2 定义引用变量

 示例:创建用户并设置密码(在shell中调用expect) 

 

总结

1.here document的概述和用法

2.epext 语法

exp_continue  表示循环匹配,匹配时关键字符时会去循环匹配如果不加则会直接退出

expect eof  匹配的结尾

在编辑expect时要以/usr/bin/expect 开头

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐