Expect手冊中文版).docVIP

  • 5
  • 0
  • 约3.13万字
  • 约 24页
  • 2016-11-30 发布于重庆
  • 举报
Expect手冊中文版)

Expect 手册中文版 最近在搞一个ssh远程反向登陆的工具,就接触到expect工具,从网上找到了些expect资料。这篇文章是由gunman翻译man手册对expect的解释。 ? EXPECT(1) 名字: Expect能与交互式程序进行“可程序化”会话的脚本语言 大纲: (命令选项概述) expect [ -dDinN ] [ -c cmds ] [ -[f|b] ] cmdfile ] [ args ] 概述: Expect是一种能够按照脚本内容里面设定的方式与交互式程序进行“会话”的程序。根据脚本内容,Expect可以知道程序会提示或反馈什么内容以及什么是正确的应答。它是一种可以提供“分支和嵌套结构”来引导程序流程的解释型脚本语言。另外,还可以在随时需要的时候把控制权交给用户,然后再还给脚本。 ExpectK是Expect和Tk的混合体。它就按照Expect和Tk的方式运行。Expect也可以直接嵌入到C或是C++程序中(这种情况是不涉及Tcl解释)。请看libexpect(3). Expect的名字是从被UUCP(UNIX到UNIX的拷贝),Kermit(一种文件传输协议, 由哥伦比亚大学设计)和一些其他Modem控制等程序设计思维大众化的“send/expect”时序理念中得出的。不像UUCP,Expect已经被广泛应用于很多你可以想像的到的程序和任务当中了。 Expect还能同时和多个程序交互。 例如:下面是一些Expect可以做到的事情 让你的计算机呼叫你,这样你可以不用付呼叫费。 启动一个游戏(例如:rogue),如果不是最佳配置,则一直重新启动,直到是最佳配置为止。然后把控制权转交给你。 运行fsck的时候,用”yes”或是”no”来回应fsck的交互问题。在没有预设答案标准的情况下把控制权返还给你。 连接到另一个网络或是BBS站点,自动收取你的邮件,就像邮件是发往你的当地系统一样。 在执行rlogin,telnet,tip,su,chgrp等等命令的时候保存“环境变量”,“当前目录”或是其他一些信息。 有很多原因致使Shell不能完成这样的任务(你自己可以试试看)。而这一切对于Expect 来说都是可以的。一般情况下,当一个程序需要程序与用户进行交互的时候就需要用到Expect。还需要的一个前提是这种交互必须能程序化(例如:循环结构,选择结构等等,个人认为必须是有规律可循的)。如果需要的话,Expect还能把控制权返还给用户。同样,用户也可以在任何时候把控制权还给脚本程序。 ? 用法: Expect通过读取cmdfile(命令文件)来执行一系列指令。只要系统支持“#!“,在Script脚本文件的首行标明“#!/usr/local/bin/expect –f“,并赋予脚本文件可执行权限,执行脚本文件就可以(隐含方式或是默认)调用Expect。 当然,上面的路径必须正确地指明Expect解释程序的位置。/usr/local/bin只是一个例子。 -c 选项用来标明需要在执行脚本内容之前来执行的命令。 这条命令(-c选项后的命令)应该用引号括起来,以免在执行时被shell分开解释。 -c选项可能会被反复使用。多条命令可以使用同一个”-c”,命令之间需要用分号隔开。这些命令会按照它们出现的先后顺序执行。(在Expectk中,”-c”相当于”-command”)。 -d 选项允许输出调试性信息。这些信息主要报告像expect和interact等命令执行时的内部行为。这个选项与写在脚本开头的”exp_internal 1”具有同样的效果,同时还会打印出Expect的版本。(strace命令用在跟踪变量声明,trace命令用于跟踪变量的赋值)(在Expectk中,”-d”相当于”-diag”) - D选项开启交互调试器。后面必须跟有一个整数值作为参数,当值为非零或是按下CTRL+C的时候(或是遇到断点,或是在脚本中恰好出现其他的调试语句),调试器会在进行下一次Tcl Procedure前取得控制权。想了解更多信息请参见README文件或是下面的SEE ALSO。(在Expectk中,这个选项相当于”-Debug”)。 - f 选项指明从哪个文件中读取命令。这个选项是可选的,因为只有当使用”#!”时它才有可能被用到。而其他选项可以写在命令行中。(在Expectk中,它相当于”-file”)。 默认情况下,命令文件是全部读入内存一并执行的。但有些时候需要每次只读一行。例如:stdin(标准输入)就是这样读取的。如果强制任意文件以这种方式(每次读一行)执行的话就使用”-b”选项。(在Expectk中,它相当于”-buffer”)。 如果”-“被一个文件名替代,那么脚本就会用读指定文件的方式来替代从标准输入读的方式。(例

文档评论(0)

1亿VIP精品文档

相关文档