期望脚本教程和例子

Expect是一种用于自动化交互式shell的脚本语言。例如,如果我们想通过使用一些expect脚本在shell上自动化Cisco设备。Expect脚本通常适用于指定的字符串。大多数使用的expect命令如下所示。

null
  • send 向进程发送字符串
  • expect 等待进程中的特定字符串
  • spawn 启动新命令

期望脚本安装

Expect有一个shell来解释和执行Expect命令。默认情况下,大多数Linux发行版不安装此软件包。

软呢帽、Cent OS、红帽:

$ sudo yum install expect

Ubuntu、Debian、Kali、Mint:

$ apt install expect
Expect Script Installation
期望脚本安装

语法

我们将使用以下语法 expect 命令。

expect [ -dDinN ] [ -c cmds ] [ [ -[f|b] ] cmdfile ] [ args ]

用法

Expect通常从脚本文件中读取脚本。现在我们将创建一个简单的脚本,用于登录Cisco设备。我们的脚本文件如下所示。

#!/usr/bin/expect  expect "poftut"  send "com"
  • #!/usr/bin/expect 行用于将expect设置为该脚本的解释器。如果我们将这个脚本文件直接提供给expect解释器,那么可以忽略这个问题,但是使用它将使脚本文件更具可读性。
  • expect "poftut" 用来表达我们期待的脚本的行 poftut 继续。如果 poftut 未提供文本脚本文件将不会跳转到下一行。
  • send "com" 将发送到远程设备或电流输出 com 字符串。

我们可以在当前bash中通过提供脚本文件名来测试我们的脚本,比如 exp1.sc

$ expect exp1.sc
Expect Usage
预期用途

超时

性能问题超时。超时用于设置等待连接或响应的最长时间。如果超时值为reach,则将评估下一步。超时值可以用 set timeout 命令。在本例中,我们将设置超时5秒。

#!/usr/bin/expect  set timeout 5  expect "poftut"  send "com"

我们不为这个expect脚本输入任何值,5秒后计算下一步。

$ expect exp1.sc
Timeout
超时

生成外部进程

现在我们可能需要使用ssh之类的外部工具来连接远程主机并在远程主机上运行expect脚本。现在我们将创建一个到远程主机的ssh连接并输入密码。

#!/usr/bin/expect  set timeout 5  spawn ssh localhost  expect "[email protected]'s password: "  send "123456"  expect "[email protected]:~$"  send "uname -a"
  • spawn ssh localhost 将使用ssh协议连接到本地主机。
  • expect " [email protected] 's password: " 将期望指定的文本。
  • send "123456" 用于发送ssh连接的密码

相关文章: Bash For和While循环示例

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享