6个Expect脚本示例

您所在的位置:网站首页 perl脚本转义字符 6个Expect脚本示例

6个Expect脚本示例

2024-07-17 16:59:51| 来源: 网络整理| 查看: 265

本文译至:http://www.thegeekstuff.com/2010/10/expect-examples/

Expect 脚本语言用于自动提交输入到交互程序。它相比其它脚本语言简单易学。使用expect脚本的系统管理员和开发人员可以轻松地自动化冗余任务。它的工作原理是等待特定字符串,并发送或响应相应的字符串。

以下三个expect命令用于任何自动化互动的过程。

send – 发送字符串到进程expect – 等待来自进程的特定的字符串spawn – 启动命令 

请确保在您的系统上安装expect软件包,因为它不会被默认安装。 一旦安装后,你会看到expect解释器“/usr/bin/expect”。 一般来说,expect脚本文件具有.exp的扩展。

1. Expect “Hello World”范例

下面的expect脚本等待具体字符串“hello”。 当它找到它时(在用户输入后),“world”字符串将作为应答发送。

#!/usr/bin/expect expect "hello" send "world"

2. 等待的字符串超时

默认情况下,等待的超时时间为10秒。 如果你不为expect命令输入任何东西,将在20秒内超时。 您也可以更改超时时间,如下所示。

#!/usr/bin/expect set timeout 10 expect "hello" send "world"

3. 使用Expect自动化用户进程

在Expect的帮助下,你可以自动化用户进程,并得到期望的输出。 例如,您可以使用Expect编写测试脚本来简化项目的测试用例。

下面的例子执行了额外的程序自动化。

#!/usr/bin/expect set timeout 20 spawn "./addition.pl" expect "Enter the number1 :" { send "12\r" } expect "Enter the number2 :" { send "23\r" } interact

执行上面的脚本,输出结果如下所示。

$ ./user_proc.exp spawn ./addition.pl Enter the number1 : 12 Enter the number2 : 23 Result : 35

如果你写的代码没有interact命令,在这种情况下,脚本会在发送字符串“23\r”后立即退出。 interact命令执行控制,处理addtion进程的作业,并生成预期的结果。

4. 在$expect_out变量中的匹配和不匹配的内容

在字符串匹配成功时expect返回,但在此之前它将匹配的字符串存储在$expect_out(0,string)。之前所收到的字符串加上匹配的字符串存储在$expect_out(buffer)。下面的例子展示了这两个变量匹配的值。

#!/usr/bin/expect set timeout 20 spawn "./hello.pl" expect "hello" send "no match : \n" send "match : \n" interact

hello.pl程序只是打印两行,如下图所示。

#!/usr/bin/perl print "Perl program\n"; print "hello world\n";

如下所示执行。

$ ./match.exp spawn ./hello.pl Perl program hello world no match : match :

5. 自动化SU登录到其他用户帐户 

Expect可以让你从程序中传递密码给Linux登录账号,而不是在终端输入密码。在下面的程序中,su自动登录到需要的账户上。 

#!/usr/bin/expect set timeout 20 set user [lindex $argv 0] set password [lindex $argv 1] spawn su $user expect "Password:" send "$password\r"; interact

如下所示执行上面的expect程序。 

bala@localhost $ ./su.exp guest guest spawn su guest Password: guest@localhost $

运行上面的脚本后,从bala用户帐户登录到guest用户帐户。 

6. SSH登录到另一台计算机

下面给出的expect程序项目可自动从一台计算机ssh登录到另一台机器。 

#!/usr/bin/expect set timeout 20 set ip [lindex $argv 0] set user [lindex $argv 1] set password [lindex $argv 2] spawn ssh "$user\@$ip" expect "Password:" send "$password\r"; interact

执行上面的expect程序如下所示。 

guest@host1 $ ./ssh.exp 192.168.1.2 root password spawn ssh [email protected] Password: Last login: Sat Oct 9 04:11:35 2010 from host1.geetkstuff.com root@host2 #


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


    图片新闻

    实验室药品柜的特性有哪些
    实验室药品柜是实验室家具的重要组成部分之一,主要
    小学科学实验中有哪些教学
    计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
    实验室各种仪器原理动图讲
    1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
    高中化学常见仪器及实验装
    1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
    微生物操作主要设备和器具
    今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
    浅谈通风柜使用基本常识
     众所周知,通风柜功能中最主要的就是排气功能。在

    专题文章

      CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭