Shell Expect自动化交互(示例)

server/2024/10/21 7:45:11/

Shell Expect自动化交互

日常linux运维时,经常需要远程登录到服务器,登录过程中需要交互的过程,可能需要输入yes/no等信息,所以就用到expect来实现交互。

关键语法

❶[#!/usr/bin/expect]

这一行告诉操作系统脚本里的代码使用那一个shell来执行。这里的expect其实和linux下的bash、windows下的cmd是一类东西。 注意:这一行需要在脚本的第一行。

❷set

expect 默认的超时时间是10秒,通过 set 命令可以设置会话超时时间,若不限制超时时间则应设置为-1。

例如:set timeout 300 // 表示会话超时时间为300s

例如:set timeout -1 /设置/永不超时,常用设置

备注:为什么要设置超时时间,因为默认时间是10s,则在交互执行的过程中,很可能会断开,导致任务执行没完成就终止。我司的一个从远程ftp上同步文件的计划任务总是执行终止,后来设置了超时时间为-1就可以了。

❸spawn

spawn后面通常跟一个Linux执行命令,表示开启一个会话、启动进程,并追踪后续交互信息。

❹expect

只有spawn执行的命令的执行结果才被expect捕捉到,主要包括标准输入的提示信息、eof和timeout。等待命令提示信息的出现,也就是捕捉用户输入的提示:

➎send

发送需要交互的值,替代了用户手动输入内容;该命令不能自动回车换行,一般要加\r(回车)或者\n

expect "密码"{ send "abc123\r"} //同一行send部分要有{}

❻结束符expect eof/interact

expect eof

这个一定要加,与spawn对应表示捕获终端输出信息终止,类似于if....endif

interact

执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。如果没有这一句登录完成后会退出,而不是留在远程终端上。

PS:expect脚本必须以interact或expect eof结束,执行自动化任务通常expect eof就够了。

示例

在shell脚本中插入expect命令,格式为如下

示例1:22.sh创建文件夹脚本

#!/bin/sh

expect

spawn ssh 10.1.1.196

expect password {send xxx\n}

send cd /home/cg/hmf_app/test\r

send mkdir newwork\r

send exit\r

expect eof

EOF

示例2:创建文件夹shell脚本

expect

spawn ssh 10.1.1.196

expect password {send xxx\n}

send cd /home/cg/hmf_app/test\r

send mkdir newwork\r

send exit\r

expect eof

EOF

示例3:拷贝文件

expect

set timeout -1

spawn scp root@10.1.1.10:/data/package/casb/$casbzip ./

expect password {send xxx\n}

expect eof

EOF

备注:

EOF

...

EOF

代表一段shell脚本

参考:Shell Expect自动化交互_shell脚本交互自动输入内容-CSDN博客


http://www.ppmy.cn/server/55876.html

相关文章

苍穹外卖--sky-take-out(四)10-12

苍穹外卖--sky-take-out(一) 苍穹外卖--sky-take-out(一)-CSDN博客​编辑https://blog.csdn.net/kussm_/article/details/138614737?spm1001.2014.3001.5501https://blog.csdn.net/kussm_/article/details/138614737?spm1001.2…

【Gin】项目搭建 一

环境准备 首先确保自己电脑安装了Golang 开始项目 1、初始化项目 mkdir gin-hello; # 创建文件夹 cd gin-hello; # 需要到刚创建的文件夹里操作 go mod init goserver; # 初始化项目,项目名称:goserver go get -u github.com/gin-gonic/gin; # 下载…

A Threat Actors 出售 18 万名 Shopify 用户信息

BreachForums 论坛成员最近发布了涉及 Shopify 的重大数据泄露事件。 据报道,属于近 180,000 名用户的敏感数据遭到泄露。 Shopify Inc. 是一家总部位于安大略省渥太华的加拿大公司。 开发和营销同名电子商务平台、Shopify POS 销售点系统以及专用于企业的营销工…

影刀_扩展屏幕运行总结

首先,先看一个例子“: 滑块拼图验证免费版 1、影刀在扩展屏幕,谷歌在主屏幕。成功 2、影刀主屏幕,谷歌在扩展屏幕,失败。 3、都在扩展屏幕,失败。 4、都在主屏幕上,成功。从上面的例子可以看出…

大力出奇迹:大语言模型的崛起与挑战

随着人工智能(AI)技术的迅猛发展,特别是在自然语言处理(NLP)领域,大语言模型(LLM)的出现与应用,彻底改变了我们与机器互动的方式。本文将探讨ChatGPT等大语言模型的定义、…

3个让你爽到爆炸的学习工具

We OCR WeOCR 是一个基于浏览器的文字识别工具,用户可以通过上传图片来识别其中的文本信息。它是一个渐进式网络应用程序(PWA),可以在浏览器中离线使用。WeOCR 是开源的,并且基于 Tesseract OCR 引擎开发。用户无需在本…

Spring Boot中的高并发处理

Spring Boot中的高并发处理 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天,我们来探讨一下在Spring Boot中如何实现高并发处理。 一、什么是高…

Linux性能优化(uptime)

uptime 当我们发现系统变慢时,我们通常做的第一件事,就是执行top或者uptime命令,来了解系统的负载情况。 [root@server ~]# uptime14:51:04 up 1 min, 2 users, load average: 0.71, 0.28, 0.10 14:51:04 : 当前时间up 1 min : 系统的运行时间2 users : 正在登陆用户数…