悦考网游:值得大家信赖的游戏下载站!
发布时间:2021-05-21 10:31:16来源:悦考网游作者:悦考网游
这篇文章给大家分享的是有关linux如何自动化交互脚本expect的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
一、介绍
expect脚本是Tcl脚本语言的拓展。用来实现自动的交互式任务,无需人为干预。在实际开发中,运行shell脚本有时候会输入linux密码或者是mysql密码等,而expect可以帮我们输入。
二、安装
expect在linux系统中没有自带,需要我们自行安装,在Ubuntu系统下,安装命令如下
?
1 2 |
|
三、简单的expect脚本
3.1、编写脚本
首先创建expect脚本
?
1 |
|
在hello.exp下写如下内容:
?
1 2 3 4 5 6 7 8 9 10 11 |
|
运行hello.exp
?
1 |
|
运行后,你会发现你的用户就变成root用户了,我们用过linux的会知道,进入root用户是需要输入密码的,而使用了expect脚本,他就会自动帮我们输入密码。这就是expect的自动化交互。
3.2、解释脚本
(1) #!/usr/bin/expect
指定要运行的脚本,与shell脚本中的 #!/bin/bash
一样意思,若你不知道你的expect安装在哪里,可以使用 which expect
来查看。我的就安装在 /usr/bin/expect下
(2) set timeout 5
set:是设置变量,可以设置自定义变量,也可以设置expect脚本内部变量的值
timeout:timeout是expect脚本的内部变量,我们自定义名称的使用不能使用这种内部变量名。timeout意思是超时时间,单位是秒,默认是10s超时,也可以设置-1,永不超时
set timeout 5:意思是在expect语句中,5s后超时,不再作出选择。
(3) spawn su
开启一个新的进程来执行 su
命令
(4) expect { assword send {“123465\r”}}
expect:从进程中接收信息, 如果匹配成功, 就执行expect后的动作
send:向进程发送字符串
?
1 2 3 |
|
说明:判断输出的信息有没有包含assword
的字符串,如果有,则发送一个命令123456\r
( \r是敲回车),并退出expect语句;如果没有,则等待timeout的时间后退出expect语句。
(5) interact
执行完spawn内的命令后不退出,剩下的操作由我们人工来执行。如登陆ssh,expect脚本可以帮我们登录(不用手动输入密码),登陆之后需要我们手动交互。
3.3、总结
看到这里,相信你已经知道了expect脚本本质:提前知道了linux系统的返回信息,并捕获这些信息,来作出应答。
四、正文
4.1、常用命令说明
命令 | 说明 |
---|---|
set timeout n | 设置expect语句超时时间为n秒。-1为永不超时 |
set name value | 设置变量名为name,其值为value |
set name [lindex $argv 0] | 设置变量名为name,其值为 传入 expect脚本的第一个 参数 。第一个参数的索引值为0,第二个为1,依次类推 |
spawn | 启动新的进程,执行命令或者指定程序 |
expect | 接收进程中返回的信息, 如果匹配成功(有大小写区分), 就执行expect后的动作 |
send | 向进程发送字符串 |
send_user | 用来打印信息,相当于shell中的echo |
exp_continue | 执行完expect后的动作后,使expect不退出,继续往下匹配 |
expect eof | 不允许用户交互,直接退出(这个用的会比interact多) |
interact | 允许用户交互 |
4.2、示例:运行shell脚本
(1)创建一个shell脚本,1.sh
?
1 2 3 4 5 6 7 8 9 |
|
该脚本的意思就是输入你的账号,密码,并打印出来
(2)创建一个expect脚本,1.exp。让1.exp帮我们输入信息
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
|
(3)运行
正常来说,运行1.sh会让你手动输入name与password,但是这里运行了1.exp后,就能让1.exp来帮你输入1.sh的信息
若你想更深入的研究expect语法,这里有使用手册
英语原版:http://www.tcl.tk/man/expect5.31/expect.1.html
中文翻译:https://blog.csdn.net/cbuy888/article/details/80561461
感谢各位的阅读!关于“linux如何自动化交互脚本expect”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
原文链接:https://blog.csdn.net/lendsomething/article/details/109066545
王者荣耀王者模拟战即将上线 王者模拟战玩法介绍
古今江湖童姥牌组搭配使用技巧攻略
王牌战士幽灵实战技巧讲解
王牌战士据点占领怎么玩 游戏模式介绍
王牌战士团战如何切入详细讲解
神雕侠侣2手游氪金玩家消费指南
和平精英通讯塔是什么 和平精英通讯塔玩法详细解析
崩坏3精英工坊新加入了什么武器圣痕 精英工坊新武器圣痕一览
第五人格Blackjack新模式玩法简介 官方新玩法游戏流程及规则
梦三国
角色扮演
征途永恒
角色扮演
永恒纪元
角色扮演
王者荣耀
角色扮演
斗罗大陆手游
角色扮演
和平精英
枪战射击
精灵盛典
角色扮演
坠落星界
其它游戏
一刀传世
角色扮演