我们通过Shell脚本可以实现简单的控制流功能,比如说循环、判断、对本地文件进行一些简单的操作、输入输出写日志等,但都是对于本地机器而言进行的操作。那么当我们需要在一台机器上操作另一台机器时,那该怎么办呢?
expect就是用来实现这种交互功能的工具。
expect介绍
expect是Unix系统中用来进行自动化控制和测试的软件工具,作为Tcl脚本语言的一个扩展,应用在交互式软件中如telnet,ftp,Passwd,fsck,rlogin,tip,ssh等等。expect是一个免费的编程工具,用来实现自动的交互式任务,而无需人为干预。说白了,expect就是一套用来实现自动交互功能的软件,比如上面说的一台机子操作另一台机子。
在实际工作中,我们运行命令、脚本或程序时,这些命令、脚本或程序都需要从终端输入某些继续运行的指令,而这些输入都需要人为的手工进行。而利用expect,则可以根据程序的提示,模拟标准输入提供给程序,从而实现自动化交互执行。这就是expect!
expect安装
我用的是Ubuntu发行版,因此执行命令
apt-get install expect
就ok啦,CentOS用户可以通过命令 yum install expect 安装
expect相关命令
- spawn:启动新的进程
- expect:从进程接收字符串(换行后系统自动打印的字符串)