Chinaunix首页 | 论坛 | 博客
  • 博客访问: 285031
  • 博文数量: 91
  • 博客积分: 1772
  • 博客等级: 上尉
  • 技术积分: 930
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-17 19:49
文章分类

全部博文(91)

文章存档

2012年(1)

2011年(36)

2010年(50)

2008年(4)

我的朋友

分类: LINUX

2011-01-13 17:20:31

刚刚学习了expect,写了一个很简单的脚本,希望能对像我一样的菜鸟有用... 

要交互的脚本(talk.sh)如下: 
#!/bin/bash 
echo "Who are you?" 
read who 
echo "Hello,$who" 
echo "Are you happy?" 
read answer 
echo "why?" 
read answe 

实现自动应答的脚本auto.sh如下: 
#!/bin/bash 

expect<<- END 
spawn ./talk.sh 
expect "who" 
send "firefly\n" 
expect "happy?" 
send "Yes,I am happy.\n" 
expect "why?" 
send "Because it worked!\n" 
expect eof 
exit 
END 

执行auto.sh后可以看到自动交互如下: 
spawn ./talk.sh 
Who are you? 
firefly 
Hello,firefly 
Are you happy? 
Yes,I am happy. 
why? 
Because it worked! 
目前只用到了expect最基本的用法,不过对用脚本实现自动化已经很有用了 

chinaunix上有一篇介绍比较详细的,现转贴在此,希望大家共同学习 
原始出处: 
一、概述 

我们通过Shell可以实现简单的控制流功能,如:循环、判断等。但是对于需要交互的场合则必须通过人工来干预,有时候我们可能会需要实现和交互程序如telnet服务器等进行交互的功能。而Expect就使用来实现这种功能的工具。 

Expect是一个免费的编程工具语言,用来实现自动和交互式任务进行通信,而无需人的干预。Expect的作者Don Libes在1990年开始编写Expect时对Expect做有如下定义:Expect是一个用来实现自动交互功能的软件套件(Expect [is a] software suite for automating interactive tools)。使用它系统管理员的可以创建脚本用来实现对命令或程序提供输入,而这些命令和程序是期望从终端(terminal)得到输入,一般来说这些输入都需要手工输入进行的。Expect则可以根据程序的提示模拟标准输入提供给程序需要的输入来实现交互程序执行。甚至可以实现实现简单的BBS聊天机器人。 :) 

Expect是不断发展的,随着时间的流逝,其功能越来越强大,已经成为系统管理员的的一个强大助手。Expect需要Tcl编程语言的支持,要在系统上运行Expect必须首先安装Tcl。 


二、Expect工作原理 

从最简单的层次来说,Expect的工作方式象一个通用化的Chat脚本工具。Chat脚本最早用于UUCP网络内,以用来实现计算机之间需要建立连接时进行特定的登录会话的自动化。 

Chat脚本由一系列expect-send对组成:expect等待输出中输出特定的字符,通常是一个提示符,然后发送特定的响应。例如下面的Chat 脚本实现等待标准输出出现Login:字符串,然后发送somebody作为用户名;然后等待Password:提示符,并发出响应sillyme。 

QUOTE: 
Login: somebody Password: sillyme 
这个脚本用来实现一个登录过程,并用特定的用户名和密码实现登录。 

Expect最简单的脚本操作模式本质上和Chat脚本工作模式是一样的。 

例子: 
1、实现功能 
下面我们分析一个响应chsh命令的脚本。我们首先回顾一下这个交互命令的格式。假设我们要为用户chavez改变登录脚本,要求实现的命令交互过程如下: 

QUOTE: 
# chsh chavez 
Changing the login shell for chavez 
管理员在2009年8月13日编辑了该文章文章。
-->
阅读(1065) | 评论(0) | 转发(0) |
0

上一篇:git 使用笔记

下一篇:git tag

给主人留下些什么吧!~~