本文介绍: expect 是由Don Libes基于Tcl(Tool Command Language )语言开发的,是一种脚本语言,主要应用于自动化交互式操作的场景,借助Expect处理交互的命令,可以将交互过程如:ssh登录,ftp登录等写在一个脚本上,使之自动化完成。尤其适用于需要对多台服务器执行相同操作的环境中,可以大大提高系统管理人员的工作效率。

🦄 个人主页——🎐个人主页 🎐✨🍁

🪁🍁🪁🍁🪁🍁🪁🍁 感谢点赞和关注 ,每天进步一点点!加油!🪁🍁🪁🍁🪁🍁🪁🍁

目录

一、概述

1.1 命令简介

1.2 使用场景

1.3 expect命令安装


一、概述


expect 是由Don Libes基于Tcl(Tool Command Language )语言开发的,是一种脚本语言,主要应用于自动化交互式操作的场景,借助Expect处理交互的命令,可以将交互过程如:ssh登录,ftp登录等写在一个脚本上,使之自动化完成尤其适用于需要对多台服务器执行相同操作的环境中,可以大大提高系统管理人员的工作效率。





  • spawn命令
  • send命令
  • interact命令



  • -c 执行脚本前先执行的命令,可多次使用
  • -d debug模式,可以在运行时输出一些诊断信息,与在脚本开始处使用exp_internal 1相似。
  • -D 启用交换调式器,可设一整数参数。
  • -f 从文件读取命令,仅用于使用#!时。如果文件名为”-“,则从stdin读取(使用”./-“从文件名为-的文件读取)。
  • -i 交互式输入命令,使用”exit”或”EOF”退出输入状态
  • — 标示选项结束(如果你需要传递与expect选项相似的参数给脚本时),可放到#!行:#!/usr/bin/expect —
  • -v 显示expect版本信息

  • spawn: 交互程序开始,执行后面的命令或程序。需要进入到expect环境才可以执行,不能直接在shell环境下直接执行
  • set timeout n : 设置超时时间,表示该脚本代码需在n秒钟内完成,如果超过,则退出。用来防止ssh远程主机网络不可达时卡住及在远程主机执行命令宕住。如果设置为-1表示不会超时
  • set: 定义变量
  • $argv expect脚本可以接受bash的外部传参,可以使用[ lindex $argv n ]n为0表示第一个传参,为1表示第二个传参,以此类推
  • expect 从交互程序进程中指定接收信息, 如果匹配成功, 就执行send的指令交互;否则等待timeout秒后自动退出expect语句
  • send 如果匹配到expect接受到的信息,就将send中的指令交互传递,执行交互动作。结尾处加上r表示如果出现异常等待的状态可以进行核查
  • exp_continue 表示循环式匹配,通常匹配之后都会退出语句,但如果有exp_continue则可以不断循环匹配,输入多条命令,简化写法。
  • exit 退出expect脚本
  • expect eof: spawn进程结束后会向expect发送eof,接收到eof代表该进程结束
  • interact 执行完代码后保持交互状态,将控制权交给用户。没有该命令执行完后自动退出而不是留在远程终端上
  • puts 输出变量



执行结果如下图: 



发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注