Linux下Expect命令安装


一、Expect介绍及应用场景

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

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

二、Expect安装

下载的 expect-5.43.0.tar.gz  需要编译、安装,需要依赖tcl-devel,所以要先确认安装tcl相关包

1、首先检查tcl 安装情况

rpm -qa | grep tcl

结果显示如下: tcl-8.4.13-4.el5

tclx-8.4.0-5.fc6

结果表示已经安装了 tcl  但是没有安装tcl-devel  所以就要安装,之前没有查看操作系统位数,下了64位的tcl-devel包,安装错误

cat  /proc/version

Linux version 2.6.18-194.el5 (mockbuild@x86-007.build.bos.RedHat.com) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-  48)) #1 SMP Tue Mar 16 21:52:43 EDT 2010

下载 tcl-devel-8.4.13-4.el5.i386.rpm 包,

http://rpm.pbone.net/index.php3/stat/4/idpl/15700692/dir/CentOS_5/com/tcl-devel-8.4.13-4.el5.i386.rpm.html

安装 rpm -ivh  tcl-devel-8.4.13-4.el5.i386.rpm

或者采用 yum install tcl-devel.i386

2、安装expect包

先要查看tcl开发包安装的位置

不同的系统的TCL安装目录不一样,解开expect-5.43.0.tar.gz 包,安装时需指定TCL的相关目录

--with-tclinclude 参数就是  tcl开发包的安装位置

./configure --with-tcl=/usr/lib --with-tclinclude=/usr/include/tcl-private/generic

make

make install

完成

3 . 编写脚本运行进运行出错:-bash: ./scm.sh: /bin/sh/expect: bad interpreter:

解决这个问题的办法是:修改文件头  :#!/usr/local/bin/expect

这样OK。

相关阅读:Linux下Expect命令应用

相关内容