expect自动化交互脚本(二)

紧接着上篇脚本进行拆分,分析里面的每个单词以及参数,解开交互的面纱,下面看脚本

#!/bin/expect
spawn ssh [email protected]
expect {
      "yes/no"     {send "yes\r";exp_continue}  ##匹配到yes/no就自动输入yes,继续往下匹配
      "*password"    {send "root\r"}        ##匹配到password,则自动输入root
}
expect eof

拆头:

#!/bin/expect

这个大概一眼就看明白了吧,指定脚本解释器,和Shell脚本是一样的

拆胸:

spawn ssh [email protected]

spawn    这是个命令执行前缀,如果你要切入一个命令就要用它开始,比如mysql_secure_installation时才会产生交互信息,那么你需要用spawn引入

拆腹:

expect {
      "yes/no"     {send "yes\r";exp_continue}  ##匹配到yes/no就自动输入yes,继续往下匹配
      "*password"    {send "root\r"}       ##匹配到password,则自动输入root
}

expect     ##作用是对spawn产生信息进行一个过滤,或者说spawn产生的交互信息进行处理

"yes/no"   ##这个是对产生的交互信息进行过滤,发现yes/no的交互信息进行启用对应的策略进行处理,注意用“”标记

send "yes\r"    ##对上述匹配到的yes/no进行响应“yes”其中\r(发送)\n(换行)\t(Tab键)  send表示发送

exp_continue   ##表示继续进行下一项exp脚本匹配,当属于最后一项匹配则不需要exp_continue结束

*password    ##表示以password结尾的交互

拆脚:

expect eof

expect eof  ##结束脚本

时间: 2024-10-04 19:04:17

expect自动化交互脚本(二)的相关文章

expect自动化交互脚本(三)

接着写一个稍微复杂点的脚本,分发文件到指定服务器脚本. 首先我们要知道远程分发文件的命令格式 scp 源文件 验证用户@远程主机:远程目录 [[email protected] ~]# scp auto_yes.exp [email protected]:/tmp/ 需求就是通过脚本来实现发送,不需要输入密码,也就是验证用户是固定的还有密码是固定的,其他的主机IP和目的路径是不固定的,我们通过设置为位置变量来实现自定义化.最终实现的效果: [[email protected] ~]# expec

expect 自动化交互软件

一.expect简介 expect是基于TCL的相对简单的一种免费的脚本编程工具语言,用来实现自动和交互式任务程序进行通信,无需人的手工干预,如:SSH.FTP等.这些程序正常情况下都需要手工进行交互,而使用expect就可以模拟人手工交互的过程,实现自动和远端程序的交互,从来达到自动化运维的目的. 官方解释:expect是一个用来实现自动交互功能的软件套件(expect is a software suite for automating interactive tools) expect支持

expect免交互脚本编程

一.大纲 1.Expect概述2.Expect安装(底层语言Tcl)3.Expect基本命令4.Expect执行方式5.Expect案例 一.Expect概述 1.Expect是建立在tcl语言基础上的一个工具,Expect是用来进行自动化控制和测试的工具.主要解决shell脚本中不可交互的问题.对于大规模的linux运维很有帮助.2.在linux运维和开发中,我们经常需要远程登录服务器进行操作,登录的过程是一个交互的过程,可能会余姚输入yes/no password等信息.为了模拟这种输入,可

自动化交互程序Expect应用实践

Expect自动化交互程序应用实践 1.Expect简介 1.1什么是Expect Expect第一个用来实现自动化交互功能的软件套件,是基于TCL的脚本编程工具语言,方便学习,功能强大. 1.2为什么要使用Expect 在现在的企业运维中,自动化运维已经成为运维的主流趋势,但是在很多情况下,执行系统命令或程序时,系统需要以交互式的形式要求运维人员输入指定的字符串,之后才能继续执行命令.例如,为用户设置密码时,一般情况下需要手工输入2次密码.ssh远程连接服务器时需要输入yes和密码信息,才能连

图灵机器人,web录音实现自动化交互问答

一.图灵机器人 介绍 图灵机器人是以语义技术为核心驱动的人工智能公司,致力于"让机器理解世界",产品服务包括机器人开放平台.机器人os和场景方案.\ 官方地址为: http://www.tuling123.com/ 使用 首先得注册一个账号,或者使用第3方登录,都可以. 登录之后,点击创建机器人 机器人名称,可以是自己定义的名字 选择网站->教育学习->其他 输入简介 创建成功之后,点击终端设置,拉到最后. 可以看到api接入,下面有一个apikey,待会会用到 右侧有一个

自动交互脚本之expect

一.Expect简介 在远程服务器执行某项任务,这是最正常不过了,如何有效自动的执行呢?这里介绍自动交互脚本expect的使用. Expect是一个简单的工具语言,功能就是进行自动化的人机交互.它的作者对Expect的定义:是一个实现自动交互功能的软件套件(a software suite for automating interactive tools),使用expect,它能帮助我们在合适的情景下进行合适的交互. Expect是一种能够按照脚本内容里面设定的方式与交互式程序进行"会话&quo

expect实现自动化交互(转载)

综述:expect主要包含三部分,spawn,expect和send spawn实现交互命令的劫持,是自动化交互的基础:然后可以用expect来进行结果查询: expect实现对交互命令输出的解析,得到关键字的查询,如password,user,然后停止,等待交互: send对解析字段内容尽心输入:如password,user,并用\r结束,停留在交互界面:interact. 一.概述 我们通过Shell可以实现简单的控制流功能,如:循环.判断等.但是对于需要交互的场合则必须通过人工来干预,有时

自动化交互expect

一,介绍 每次服务器控制链接都需要输入密码,很麻烦,每次交互大大延长了时间 因此就有了免交互及自动化交互存在expect 二,安装 yum install expect -y 查看是否安装成功 rpm -qa expect 安装算是完成了 三,ssh链接交互 主机:三台 ---->一台主控制服务器 10.0.0.203        ----mysql服务器 10.0.0.204 -----web服务器 手动链接服务器的话需要实现两次交互操作 我们现在用expect交互 编写kingle.exp

与bash script脚本自动化交互

如果bash脚本中一些命令需要手工输入进行交互的时候,那么脚本的自动化就没法进行下去.比如:ssh somehost需要输入用户名和密码,脚本运行到这个命令后,便会停止,等待用户输入. 如果在简单情景下,比如只需要用户输入一次,即一次性交互时,可以直接这样: # ... some directives here # Remove the machine, confirming "y" when asked by docker-machine echo 'y' | docker-mach