1. 介绍
expect是建立在tcl语言基础上的一个工具,它可以让一些需要交互的任务自动化地完成。相当于模拟了用户和命令行的交互操作。
一个常用的场景就是批量配置集群无秘钥登录。如果集群的机器数量很多,手动一台一台地去每台机子去配置无密钥是非常糟糕的事情。使用expect功能,可以远程登录机器,并通过交互方式进行无秘钥登录。
2. 安装
Linux系统自身并没有安装expect和tcl,需要手动安装。当电脑联网时,安装过程也相当简单。
yum安装
yum install -y expect
安装expect过程中会自动安装tcl。安装完之后,可以通过 rpm -qa 检查一下:
[root@master ~]# rpm -qa|grep expect
expect-5.44.1.15-5.el6_4.x86_64
[root@master ~]# rpm -qa|grep tcl
tcl-8.5.7-6.el6.x86_64
tcl-devel-8.5.7-6.el6.x86_64
3. 关键命令及原理
首先使用spawn启动进程,即开启一个会话。expect类似于一个监听进程,等待输出特定的字符串。当spawn启动的会话有expect所期待的输出时,会被expect捕捉到。