概述

Expect是一个用来实现自动交互功能的软件套件,使用它系统管理员可以创建脚本用来实现对命令或程序提供输入,而这些命令和程序是期望从终端(terminal)得到输入,一般来说这些输入都需要手工输入进行的。

当你在多台服务器相同的用户user下面,要登录到所有的服务器上执行一些相同的命令(修改一些配置文件,执行一些命令),如果ssh到不同的机子上去,一个个执行的话,人肉来做会疯掉的,所以通过expect写成shell脚本来批量处理,才是程序机器来干的事情。

下面基于操作系统:ubuntu14.04 TLS,介绍下怎么安装expect工具。


安装expect

apt-get install expect

ubuntu18.04安装简书(详解ubuntu14.04系统安装expect工具)(1)

ubuntu18.04安装简书(详解ubuntu14.04系统安装expect工具)(2)


测试是否安装成功

chsh ftp

ubuntu18.04安装简书(详解ubuntu14.04系统安装expect工具)(3)

这里简单写一个测试脚本

#!/usr/bin/expect set user [lindex $argv 0] spawn chsh $user expect "]:" send "/bin/bash " expect eof exit

说明:

(1)首行指定用来执行该脚本的命令程序,这里是/usr/bin/expect。

(2)程序第一行用来获得脚本的执行参数(其保存在数组$argv中,从0号开始是参数),并将其保存到变量user中。

(3)第二个参数使用expect的spawn命令来启动脚本和命令的会话,这里启动的是chsh命令,实际上命令是以衍生子进程的方式来运行的。

(4)随后的expect和send命令用来实现交互过程。脚本首先等待输出中出现]:字符串,一旦在输出中出现chsh输出到的特征字符串(一般特征 字符串往往是等待输入的最后的提示符的特征信息)。对于其他不匹配的信息则会完全忽略。当脚本得到特征字符串时,expect将发送/bin/tcsh和 一个回车符给chsh命令。最后脚本等待命令退出(chsh结束),一旦接收到标识子进程已经结束的eof字符,expect脚本也就退出结束。

ubuntu18.04安装简书(详解ubuntu14.04系统安装expect工具)(4)


expect是在Tcl基础上创建起来的,所以在编译安装expect前应该先安装Tcl,不过ubuntu的话我们直接apt-get安装就可以了,也不用去链接之类。

后面会分享更多Linux方面内容,感兴趣的朋友可以关注下!

ubuntu18.04安装简书(详解ubuntu14.04系统安装expect工具)(5)

,