认识Expect
Expect是一个免费的编程工具语言,用来实现自动和交互式任务进行通信,而无需人的干预。
Expect是不断发展的,随着时间的流逝,其功能越来越强大,已经成为系统管理员的的一个强大助手。
Expect需要Tcl编程语言的支持,要在系统上运行Expect必须首先安装Tcl。
Expect工作原理
从最简单的层次来说,Expect的工作方式象一个通用化的Chat脚本工具。Chat脚本最早用于UUCP网络内,以用来实现计算机之间需要建立连接时进行特定的登录会话的自动化。
Chat脚本由一系列expect-send对组成:expect等待输出中输出特定的字符, 通常是一个提示符,然后发送特定的响应。例如下面的Chat脚本实现等待标准输出出现Login:字符串,然后发送somebody作为用户名;然后等待 Password:提示符,并发出响应sillyme。
进入 http://www.tcl.tk/software/tcltk/8.5.html
点击 Download Tcl/Tk 8.5.8 Source Releases,
选择下载 tcl8.4.19-src.tar.gz,和tk8.4.19-src.tar.gz;
1. 开始安装
a). 编译安装tcl8.4.19;
最后几句:
b). 编译安装tk8.4.19;
同样的步骤,不再详述;
安装expect:
2. 解压;
3. 安装;
# ./configure
checking for sin... no
checking for Tcl private headers... checking for tclInt.h... no
configure: error: Can't find Tcl private headers
# find / -name "tclInt.h"
/home/expect/tcl8.4.19/generic/tclInt.h
#./configure --with-tclinclude=/home/expect/tcl8.4.19/generic/
... ...
checking for Tcl private headers... (cached) found in /home/guoq/osrc/tcl8.4.19/generic
updating cache .././config.cache
creating ./config.status
creating Makefile
看来ok了!
4. 测试脚本
#!/usr/local/bin/expect -f
set ipaddress [lindex $argv 0]
set passwd [lindex $argv 1]
set timeout 30
spawn ssh root@$ipaddress
expect {
"yes/no" { send "yesr"; exp_continue}
"password:" { send "$passwdr" }
}
expect "]*"
interact
您可能感兴趣的文章:
expect脚本远程批量管理服务器的思路解析
expect实现scp ssh自动输入密码登录的例子
expect批量管理计算机的一个脚本
一个远程登录的简单expect脚本
expect自动检测并重启另外一台服务器上的程序
批量修改ssh配置的expect脚本
expect自动登录远程服务器和执行重复任务的例子
ssh expect自动登录的脚本
远程登录的简单expect脚本