iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >怎么在Shell脚本中实现Expect免交互
  • 414
分享到

怎么在Shell脚本中实现Expect免交互

2023-06-09 13:06:52 414人浏览 薄情痞子
摘要

本篇文章给大家分享的是有关怎么在shell脚本中实现Expect免交互,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Expext概述Expect是建立在tcl基础上的一个工具,

本篇文章给大家分享的是有关怎么在shell脚本中实现Expect免交互,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

Expext概述

Expect是建立在tcl基础上的一个工具,Expect是用来自动化控制和测试的工具。主要解决shell脚本中不可交互的问题。有助于大规模的系统运维工作。在日常的运维与开发中,常常需要运城登录到服务器,然而登录的过程却是个需要交互的过程,可能会要输入yes/no等信息,使用Expect脚本即可实现免交互操作。

Expect安装

挂载光盘
制作本地YUM源
执行安装命令
yum install expect -y

基本命令

send
向进程发送字符串,用于模拟用户的输入,该命令不能自动回车换行,一般要加\r (回车)。

expect
expect的一个内部命令,判断上次输出结果里是否包含指定的字符串,如果有则立即返回,否则就等待超时时间后返回。只能捕捉由spawn启动的进程的输出。

spawn
启动进程,并跟踪后续交互信息

interact
执行完成后保持交互状态,把控制权交给控制台

Timeout
指定超时时间,过期则继续执行后续指令
单位:秒
timeout -1 为永不超时
默认的timeout是10秒

exp_continue
允许expect继续向下执行指令

send_user
回显命令,相当于的echo输出

$arvg 参数数组
Expect脚本可以接受从bash传递的参数。可以使用[lindex $arvg n]获得,n从0开始,分别表示第一个,第二个,第三个为参数...参数

Expect脚本必须以interact或expect ecof结束,执行自动化任务通常expect eof就够了
expect eof实在等待结束标志。由spawn启动的命令在结束时会产生一个eof标记,expect eof即在等待这个标记

Expect语法

单分支语法

expect "passwd:" {send"mypasswd\r";}

多分支语法

expect"aaa"{send"AAA\r"}expect"aaa"{send"AAA\r"}expect"aaa"{send"AAA\r"}//Send命令不具备回车换行功能,一般要加\或\n
expect{"aaa"{send"AAA\r"}"bbb"{send"BBB\r"}"ccc"{send"CCC\r"}}//只要匹配上了任何一个,执行项硬的send语句后退出该expect语句
expect{"aaa"{send"AAA";exp_continue}"bbb"{send"BBB";exp_continue}"ccc"{send"CCC"}}//exp_continue表示继续后面的匹配,若匹配上了aaa,执行完send语句后还要继续往下匹配bbb

-re  参数表示匹配正则表达式

Expect执行方式

1.直接执行

案例演示:
ssh登录
首次登陆
正常登录
连接被拒绝,可能ssh没开,或端口号不对,亦或是防火墙限制
没有该连接地址

[root@localhost ~]# vim a.sh#!/usr/bin/expect       //Expect二进制文件的路径#超时时间set timeout 20         //20秒等待时间log_file test.log        //日志文件log_user 1            //日志用户#参数传入set hostname [lindex $argv 0]    //追加参数0,统计变量并加载第1位置参数set passWord [lindex $argv 1]    //追加参数1,统计变量并加载第2位置参数#追踪命令spawn ssh root@$hostname     //追踪命令#捕捉信息并匹配免交互执行expect {                       //捕捉提示信息    "Connection refused" exit     //捕捉到拒接连接信息即退出    "service not konwn" exit     //捕捉到服务为开启信息即退出    "(yes/no)"                // 捕捉yes或no参数    {send "yes\r";exp_continue}  //输入yes并继续执行            "*password"               // 捕捉参数      {send "$password\r"}       //输入密码参数       }#控制权交予控制台interact                     //控制权转交控制台人为输入exit                        //退出脚本[root@localhost ~]# chmod +x a.sh     //授予脚本执行权限[root@localhost ~]# ./a.sh 192.168.235.134 123123    //运行脚本远程连接spawn ssh root@192.168.235.134root@192.168.235.134's password: Last login: Thu Oct 10 15:13:27 2019 from 192.168.235.1    //已成功远程登录[root@localhost ~]# exit          登出Connection to 192.168.235.134 closed.                  //退出远程登录

2.嵌入执行

案例演示:
创建用户jarry,密码123123

[root@localhost ~]# vim c.sh#!/bin/bash user=$1password=$2#非交互命令放expect外面useradd $user#开始交互expect <<-EOF            //Expect开始标志,标准性输入,等同于stdinspawn passwd $userexpect "新的*"send "$password\r"expect "重新*"send "$password\r"expect eof;EOF                    //Expect结束语句,EOF前后不能有空格[root@localhost ~]# chmod +x c.sh[root@localhost ~]# ./c.sh jarry 123123spawn passwd jarry更改用户 jarry 的密码 。新的 密码:无效的密码: 密码少于 8 个字符重新输入新的 密码:passwd:所有的身份验证令牌已经成功更新。

以上就是怎么在Shell脚本中实现Expect免交互,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网精选频道。

--结束END--

本文标题: 怎么在Shell脚本中实现Expect免交互

本文链接: https://www.lsjlt.com/news/256089.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么在Shell脚本中实现Expect免交互
    本篇文章给大家分享的是有关怎么在Shell脚本中实现Expect免交互,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Expext概述Expect是建立在tcl基础上的一个工具,...
    99+
    2023-06-09
  • Shell脚本之Expect免交互的实现
    Expext概述 Expect是建立在tcl基础上的一个工具,Expect是用来自动化控制和测试的工具。主要解决shell脚本中不可交互的问题。有助于大规模的系统运维工作。在日常的运维与开发中,常常需要运城登录到服务器...
    99+
    2022-06-04
    Shell脚本 Expect免交互 Shell Expect免交互
  • shell脚本怎么免交互
    这篇文章将为大家详细讲解有关shell脚本怎么免交互,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在写shell脚本的过程中,我们经常碰到一些操作需要我们取实时指定一些参数,这就需要用到免交互了。免交互让...
    99+
    2023-06-09
  • Linux中怎么使用expect实现脚本自动交互
    这篇文章主要介绍“Linux中怎么使用expect实现脚本自动交互”,在日常操作中,相信很多人在Linux中怎么使用expect实现脚本自动交互问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux中怎么使...
    99+
    2023-06-27
  • 在Linux中如何通过expect工具实现脚本的自动交互
    这篇文章给大家介绍在Linux中如何通过expect工具实现脚本的自动交互,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。expect是一个自动化交互套件,是建立在tcl基础上的,能过通过脚本设置自动进行交互通信。1 安...
    99+
    2023-06-28
  • 怎么使用expect命令实现Shell自动化交互
    这篇文章将为大家详细讲解有关怎么使用expect命令实现Shell自动化交互,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。背景linux脚本中有很多场景是进行远程操作的,例如远程登录ssh、远程复制scp...
    99+
    2023-06-09
  • 怎么在Linux中使用expect命令编写一个自动化交互脚本
    怎么在Linux中使用expect命令编写一个自动化交互脚本?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。expect 是建立在工具控制语言(Tool Control La...
    99+
    2023-06-09
  • 如何实现Shell脚本中非交互式修改密码
    本篇内容介绍了“如何实现Shell脚本中非交互式修改密码”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1:使用chpasswdchpassw...
    99+
    2023-06-09
  • 怎么使用shell脚本实现ssh互信
    要使用shell脚本实现ssh互信,你可以按照以下步骤操作:1. 创建一个名为`setup_ssh.sh`的shell脚本文件。2....
    99+
    2023-09-22
    shell ssh
  • 怎么用CSS编写脚本实现交互效果
    这篇文章主要讲解了“怎么用CSS编写脚本实现交互效果”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用CSS编写脚本实现交互效果”吧!如何在CSS中编写脚...
    99+
    2022-10-19
  • 怎么在Shell脚本中实现一个ftok函数
    怎么在Shell脚本中实现一个ftok函数?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。#!/bin/shlet key=0function ftok(...
    99+
    2023-06-09
  • Shell脚本中怎么避免重复执行
    这篇文章给大家介绍Shell脚本中怎么避免重复执行,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。代码如下:# 检查通过sh命令执行的shell脚本是不是还在执行当中,避免重复执行. # 把这段代码放在需要保证唯一性的程...
    99+
    2023-06-09
  • Shell脚本中怎么实现随机数
    Shell脚本中怎么实现随机数,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、通过时间获得随机数(date)这个也是我们经常用到的,可以说时间是唯一的,也不会重复的,从这个里...
    99+
    2023-06-09
  • 怎么在Shell脚本中调用另一个脚本
    这期内容当中小编将会给大家带来有关怎么在Shell脚本中调用另一个脚本,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。forkfork 是最普通的, 就是直接在脚本里面用 path/to/foo.sh 来调...
    99+
    2023-06-09
  • 怎么在linux中复制shell脚本
    在Linux中复制shell脚本可以使用cp命令。以下是复制shell脚本的基本语法:cp 源文件 目标文件其中,源文件是要复制的s...
    99+
    2023-09-15
    linux shell
  • 怎么在Linux中建立shell脚本
    今天就跟大家聊聊有关怎么在Linux中建立shell脚本,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1. 程序必须以下面的行开始(必须放在文件的第一行):#!/bin/sh符号#!...
    99+
    2023-06-09
  • Linux中怎么使用expect脚本实现远程机器自动登录
    本篇内容介绍了“Linux中怎么使用expect脚本实现远程机器自动登录”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!首先创建一个expec...
    99+
    2023-06-09
  • 怎么用shell脚本实现ssh登录
    要使用shell脚本实现SSH登录,你可以使用SSH命令行工具,并将其包含在shell脚本中。以下是一个简单的示例:```bash#...
    99+
    2023-10-12
    shell ssh
  • shell脚本怎么实现猜数游戏
    这篇文章主要介绍shell脚本怎么实现猜数游戏,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!用shell脚本写一个猜数游戏最近用shell写的一个猜数游戏,包括4个不同难度,脚本如下:#作者:p_小王echo&nbs...
    99+
    2023-06-09
  • 怎么在shell实现定时周期性执行脚本
    这期内容当中小编将会给大家带来有关怎么在shell实现定时周期性执行脚本,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。示例编写测试脚本脚本 time .sh$ cat time.sh&...
    99+
    2023-06-09
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作