linux中expect的介绍与使用示例
作者:Lingxian_Kong 发布时间:2023-03-29 09:15:05
一、概述
我们通过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。
引用:Login: somebody Password: sillyme
这个脚本用来实现一个登录过程,并用特定的用户名和密码实现登录。
Expect最简单的脚本操作模式本质上和Chat脚本工作模式是一样的。
三、一个例子:
#!/usr/bin/expect -f
set ip [lindex $argv 0 ] //接收第一个参数,并设置IP
set password [lindex $argv 1 ] //接收第二个参数,并设置密码
set timeout 10 //设置超时时间
spawn ssh root@$ip //发送ssh请滶
expect { //返回信息匹配
"*yes/no" { send "yes\r"; exp_continue} //第一次ssh连接会提示yes/no,继续
"*password:" { send "$password\r" } //出现密码提示,发送密码
}
interact //交互模式,用户会停留在远程服务器上面.
运行结果:
root@ubuntu:/home/zhangy# ./test.exp 192.168.1.130 admin
spawn ssh root@192.168.1.130
Last login: Fri Sep 7 10:47:43 2012 from 192.168.1.142
[root@linux ~]#
来源:http://lingxiankong.github.io/blog/2014/11/25/linux-expect/


猜你喜欢
- 图为山寨央视网站首页。(记者 齐广君 摄)山寨网站冒充央视骗钱财 民警提醒市民要警惕“非常6+1”是
- vps服务器裸奔在公网上,总感觉有点不安全,没办法总得整点措施来加固下服务器呀,安全第一。linux系统自带防火墙必须要好好利用起来,可是我
- 查看记录文件是很乏味的。记录文件令人厌恶,包含了太多的信息,经常使人非常头疼。幸运的是,这些枯燥的工作有代劳者,利用一些日志分析工具,不仅可
- 11月6日消息,据中国法院网报道,由于盗播热映电影,爆米花视频网的主办公司普信通(北京)科技有限公经法院主持调解同意赔偿还款,但还款事宜此后
- 常用组件主要包括Aspjpeg、Jmail、LyfUpload、动易、ISAPI_ReWrite等,本文就仅说这5种,其他类型组件可以根据需
- 网站做完之后,接下来的事情就是发布了,那么,该如何用IIS发布到本地局域网呢?一、IIS安装首先,要安装IIS,IIS不需要去网
- 配置httpd.conf 监听多个端口 # Listen: Allows you to bind Apache to specific IP
- 一、导语调度器(Scheduler)子系统是内核的核心子系统之一,负责系统内 CPU 资源的合理分配,需要能处理纷繁复杂的不同类型任务的调度
- 这篇文章缘起于这段时间我对拆东墙补西墙这种工作方式的抱怨。先是磁盘空间不够用,配发的电脑仅仅剩余12G的空间,不能外接硬盘,暂时也不能上传备
- CentOS下RabbitMq高可用集群环境搭建教程分享给大家。准备工作1、准备两台或多台安装有rabbitmq-server服务的服务器我
- 老谢研究网站推广很多年了,SEO是个很不错的推广。站长们研究SEO兴趣也很高,这很好,因为SEO可以直接的为你网站带来流量。但是老谢认为我们
- 由于各种原因,我们有时候需要在一个IP地址上建立多个web站点,在IIS5中,我们可能通过简单的设置达到这个目标。在IIS中,每个 Web
- 本文简单介绍Ubuntu系统下SVN的搭建过程更新源sudo apt-get update安装SVNsudo apt-get install
- 作者:Matthew Coers译者:Sheneyan(子乌)时间:2006.07.12英文原文: Search Engine Optimi
- 我们现在如果认为微博客很难获得盈利(或者说是可观的收入),是因为我们的思考陷入思维定势,认为Twitter现在的盈利是怎样的,中国的微博客也
- 百度收录减少的问题,好多站长都遇见过,很多朋友说自己网站莫名其妙的百度收录减少,有的在还没有找到原因,没有合适的解决办法。百度收录减少也被有
- centos 7 变化很多 首先安装过程中,操作变化方式很大,mini安装也没有了base这个选项,也就导致很多在centos6里面的命令在
- 发布商都很关注收入的波动问题,今天我们就帮大家深入分析一下如何知道收入波动的背后原因,并采取相应的措施。首先,大家都知道,AdSense 收
- 在WordPress博客里,有三个名词估计很多博友都不是很了解,也有博友经常性的使用这些功能,或许也有每次只是一眼带过的而已。其实Ping、
- 拨号服务器的维护和管理是关乎服务器端和客户端、涉及软件与硬件的较繁杂的工作。它要求管理员多实践,且善于归纳和总结,只有这样,才能形成一套自已