Expect 自动化交互式程序

Expect 自动化交互式程序Expect 介绍 expect 是一个用来实现自动交互功能的软件套件 是基于 TCL 的脚本编程工具语言 为什么要使用 Expect 在现今的运维中 自动化运维已经成为运维的主流趋势 但是在很多情况下 执行系统命令或程序时 系统会以交互式的形式要求运维人员必须输入指定字符之后才能继续执行命令 例如 为用户设置密码时 一般情况下就需要手动输入 2 次密码 再比如使用 SSH 远程连接服务器时 第一次连接要和系统

Expect介绍

expect是一个用来实现自动交互功能的软件套件,是基于TCL的脚本编程工具语言。 

为什么要使用Expect

在这里插入图片描述

安装Expect软件

[root@zh ~]# yum install -y expect 

下面利用Expect的功能实现自动交互,发送密码并执行上述ssh命令(由于已经执行过一次ssh了,yes的交互就不会再出现了)

[root@zh ~]# cat test.exp # <==扩展名使用exp代表是Expect脚本 #!/usr/bin/expect # <==脚本开头解释器,和shell类似,表示程序使用Expect解析 spawn ssh root@192.168.1.141 uptime # <==执行ssh命令(注意开头必须要有spawn,否则无法实现交互) expect "*password:" #<==利用Expect获取执行上述ssh命令输出的字符串是否为期待的字符串 *password,这里的*是通配符 send "1\n" #<==当获取到期待的字符串password时,则发送 1 密码给系统,\n为换行 expect eof #<==处理完毕后结束Expect 

执行Expect脚本

[root@zh ~]# expect test.exp spawn ssh root@192.168.1.141 uptime root@192.168.1.141's password: #<==这里不需要手动输入密码了 01:19:24 up 43 min, 2 users, load average: 0.00, 0.01, 0.05 

spawn 命令

spawn 命令的语法为:
spawn [选项] [需要自动交互的命令或程序] 

例如:

spawn ssh root@192.168.1.141 uptime 

expect 命令

expect 命令语法
expect 表达式 [动作] 

示例如下:

spawn ssh root@192.168.1.141 uptime expect "*password" {send "\r"} 

说明

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/205273.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午6:24
下一篇 2026年3月19日 下午6:24


相关推荐

  • ideaIU-2021.5.4激活码(最新序列号破解)

    ideaIU-2021.5.4激活码(最新序列号破解),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月20日
    265
  • 【菜鸟学Python】案例一:汇率换算「建议收藏」

    【菜鸟学Python】案例一:汇率换算「建议收藏」汇率换算V1.0案例描述:设计一个汇率换算器程序,其功能是将外币换算成人民币,或者相反案例分析:分析问题:分析问题的计算部分;确定问题:将问题划分为输入、处理及输出部分;设计算法:计算部分

    2022年7月5日
    26
  • java8以后字符串常量池的位置,以及元空间的探秘,使用VisualVM进行实战验证

    java8以后字符串常量池的位置,以及元空间的探秘,使用VisualVM进行实战验证  在网上看了很多博客,解释也比较多,关于字符串常量池的具体位置难以分辨谁真谁假。  对于jdk8以后的版本有人说字符串常量池在元空间中,也有人说字符串常量池存在堆中。  到底谁说的对?他们的说法有依据吗?  今天让我们来一起探讨一下这个问题有人说字符串常量池在java堆中,可又有人说常量池存在元空间中。分享几篇知乎文章关于jvm运行时数据区的模型:1、面试官|JVM为什么使用元空间替换了永久代?2、Java方法区与元空间为了解决这个问题,下面我们通过Idea、VisualVm

    2022年7月28日
    20
  • Java学习电子书大全「建议收藏」

    Java学习电子书大全「建议收藏」声明:以下内容仅供学习交流,转载自沉默王二gitee,如有侵权联系作者删除。简单说一下我为什么要花半个多月的时间来整理这份书单。主要是因为很多读者的知识体系是零散的,不成系统的,况且技术书籍这么庞杂。有了我这份清单之后,那些没有经验或者经验有限的初学者,在学习的时候思路瞬间就开阔了许多:少走弯路,利用有限的精力,更加高效地学习。想应聘初级Java工程师,那只需要阅读入门、工具、框架和数据库方面的书籍就行了;如果想应聘Java高级工程师,那么就需要阅读并发编程、底层、性能优化方面的书籍

    2022年7月7日
    74
  • 机器人手眼标定Ax=xB(eye to hand和eye in hand)及平面九点法标定[通俗易懂]

    机器人手眼标定Ax=xB(eye to hand和eye in hand)及平面九点法标定[通俗易懂]一、背景Calibration是机器人开发者永远的痛。虽然说方法说起来几十年前就有,但每一个要用摄像头的人都还是要经过一番痛苦的踩坑,没有轻轻松松拿来就效果好的包。机器人视觉应用中,手眼标定是一个非常基础且关键的问题。简单来说手眼标定的目的就是获取机器人坐标系和相机坐标系的关系,最后将视觉识别的结果转移到机器人坐标系下。手眼标定行业内分为两种形式,根据相机固定的地方不同,如果相机和机器…

    2022年4月27日
    101
  • 运行代码后出现Process finished with exit code 0是为什么?

    运行代码后出现Process finished with exit code 0是为什么?

    2021年10月21日
    205

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号