当前位置: 首页 > news >正文

Shell免交互

免交互

免交互就是:不需要人为控制就可以完成的自动化操作,自动化运维
Shell脚本和免交互是一个概念,是有两种写法。

Here Document 免交互

使用I/O(输入/输出)重定向的方式将命令的列表提供给交互式的程序或者命令
cat read 是一种标准输入,只能接受正确的指令或者命令。
默认使用/bin/bash解释器

格式:

命令 << EOF(结束标记,也可自定义名称)
>
>
>结束语

示例如下:

wc -l << EOF  

注意事项:

  • 标记可以使用任意合法字符(通常用EOF)
  • 结尾的标记一定要顶格写,前面不能有任何字符
  • 结尾的标记后面也不能有任何字符,包括空格
  • 如果开头的标记前有空格,这个空格会被自动省略

用免交互脚本形式来定义变量进行传参:

[root@localhost opt]# vim test1.sh#!/bin/bash
var="i am the iron man!"
myvar=$(cat << EOF
today is Monday
$var
EOF
)
echo $myvar[root@localhost opt]# sh test1.sh
today is Monday i am the iron man!

命令 <<- 'EOF':多加了一个横杠是 只能用来抑制前面的TAB空字符
:<<EOF:用来注释掉多行的操作

* Expect 免交互  (面)

Expect是 tcl语言基础之上的一种工具,自动化测试和控制,是脚本中来解决免交互的问题;它是一个第三方应用,使用前需先安装。

常用的转义符有:

\n:换行

\t:制表符 TAB键

\r:回车

\b:退格符,删除键

注意事项:

#!/usr/bin/expect
使用的解释器是/usr/bin/expect

必须赋权执行 —— chmod 777

执行方式使用 ./

语法:

  • spawn:后面通常跟一个Linux的执行命令。表示开启一个会话,启动一个进程,并且跟踪后续的交互信息
  • expect:捕获,捕获上一次执行的命令中,是否包含指定的字符串,如果有立即返回,否则等待超时时间,自动退出;默认趟时间 10秒;expect只能捕获由spawn启动的进程输出
  • send:向进程发送字符串,用于模拟用户的输入。该命令不能自动回车,一般后面要加一个回车键如:\r

三种写法方式:

expect "密码" {send "abc123\r"}

expect "密码"
send "abc123\r"

多分支结构:

expect

{

"密码1" {send "abc123\r"}

"密码2" {send "abc123\r"}

"密码3" {send "abc123\r"}

}

支持多条件查找,其中一个匹配即执行相应的send语句,并退出expect语句。

结束符:

  • expect eof:切换回之前的终端
  • interact:留着当前终端不变
  • set:可设置超时等待时间

set timeout 5 :设置等待时间5

示例如下:

给用户创建密码的免交互脚本形式:

[root@localhost opt]# vim test1.sh#!/usr/bin/expect
set timeout 5spawn passwd ggg
expect "新的密码"
send "abc123\r"
expect "重新输入新的密码"
send "abc123\r"
expect eof[root@localhost opt]# ./ test1.sh
更改用户 ggg 的密码
新的 密码:
无效的密码:密码少于 7 个字符
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新

扩展语句:

exp_continue:可在expect判断后,继续匹配expect捕获的其它内容,类似于脚本中的continue, 表示允许继续向下执行指令
它的语格式:

expect {

”(yes/no)“ {send "yes\r";exp_continue}

"password" {send "123\r"}

}

send_usr:回显信息,相当于echo接上用户要输出的内容
格式如下:

send_usr ok

接受参数:类似于shell中的位置变量($1、$2)
格式如下:

set hostname [lindex $argv 0] $1
set password [lindex $argv 1] $2

嵌入执行模式

解释器为: /bin/bash
注:如涉及终端切换,最好不要用嵌入模式

#嵌入执行更换用户密码,免交互形式

#!/bin/bash
user=$1
passwd=$2
useradd $usr
/usr/bin/expect <<- EOF
#expect 开始标识
spawn passwd $usr
expect"新的*"
send "${passwd}\r"
expect“重新*"
send "${passwd}\r"
expect eof
EOF

*面  #免交互的脚本,实现自动远程登录

ssh远程登录

#!/usr/bin/expect
set ip 192.168.233.30
#指定远程登录的ip地址
set user root
#指定为root用户
set password 123
#设定密码为123
set timeout 5
spawn ssh $user@$ip
#root@192.168.233.30
expect {
"yes/no" {send "yes\r";exp_continue}
"password" {send "$password\r"}
}
expect eof

*面  #免交互传参方式进行远程登录

#!/usr/bin/expect
set name [lindex $argv 0]
set ip [lindex $argv 1]
set password [lindex $argv 2]
set timeout 5
spawn ssh $name@$ip
expect {
"refused" {send_user "访问被拒绝\r"}
"No route to host" {send user "主机名或者ip地址有误\n"]
"yes/no" {send "yes\r";exp_continue}
"password" {send "$password\r"}
}
expect eof

相关文章:

Shell免交互

免交互 免交互就是&#xff1a;不需要人为控制就可以完成的自动化操作&#xff0c;自动化运维 Shell脚本和免交互是一个概念&#xff0c;是有两种写法。 Here Document 免交互 使用I/O(输入/输出)重定向的方式将命令的列表提供给交互式的程序或者命令cat read 是一种标准输入…...

设计模式之四:工厂模式

引言&#xff1a;除了使用new操作符之外&#xff0c;还有更多制造对象的方法。同时&#xff0c;实例化这个活动不应该总是公开地进行。 1.简单工厂模式 这里有一些相关的具体类&#xff0c;要在运行时有一些具体条件来决定究竟实例化哪个类。这样的代码&#xff08;if..elseif…...

斩获CVPR 2023竞赛2项冠军|美团街景理解中视觉分割技术的探索与应用

总第569篇 2023年 第021篇 视觉分割技术在街景理解中具有重要地位&#xff0c;同时也面临诸多挑战。美团街景理解团队经过长期探索&#xff0c;构建了一套兼顾精度与效率的分割技术体系&#xff0c;在应用中取得了显著效果。同时&#xff0c;相关技术斩获了CVPR 2023竞赛2项冠军…...

UE4/5C++多线程插件制作(十五、将模板统一,修改统一后的其他类,修改继承,修改返回类型等)

目录 MTPManageBase.h MTPAbandonable.h MTPAbandonableManage.h MTPThreadInterface.h MTPThreadAgendyManage.h MTPThreadTaskManage.h MTPManage.cpp MTPThreadTaskManage.h...

K8S系统监控:使用Metrics Server和Prometheus

Kubernetes 也提供了类似的linux top的命令&#xff0c;就是 kubectl top&#xff0c;不过默认情况下这个命令不会生效&#xff0c;必须要安装一个插件 Metrics Server 才可以。 Metrics Server 是一个专门用来收集 Kubernetes 核心资源指标&#xff08;metrics&#xff09;的…...

数据结构基础之排序算法

在数据结构中&#xff0c;常见的排序算法有以下几种&#xff1a; 冒泡排序&#xff08;Bubble Sort&#xff09;&#xff1a;通过比较相邻元素并交换它们的位置&#xff0c;每轮将最大&#xff08;或最小&#xff09;的元素冒泡到末尾&#xff0c;重复执行直到排序完成。 fun…...

Spark(37):Streaming DataFrame 和 Streaming DataSet 创建

目录 0. 相关文章链接 1. 概述 2. socket source 3. file source 3.1. 读取普通文件夹内的文件 3.2. 读取自动分区的文件夹内的文件 4. kafka source 4.1. 导入依赖 4.2. 以 Streaming 模式创建 Kafka 工作流 4.3. 通过 Batch 模式创建 Kafka 工作流 5. Rate Source…...

SpringBoot集成Thymeleaf

Spring Boot 集成 Thymeleaf 模板引擎 1、Thymeleaf 介绍 Thymeleaf 是适用于 Web 和独立环境的现代服务器端 Java 模板引擎。 Thymeleaf 的主要目标是为开发工作流程带来优雅的自然模板&#xff0c;既可以在浏览器中正确显示的 HTML&#xff0c;也可以用作静态原型&#xf…...

算法练习(2):牛客在线编程03 二叉树

package jz.bm;import jz.TreeNode;import java.util.*;public class bm3 {/*** BM23 二叉树的前序遍历*/public int[] preorderTraversal (TreeNode root) {ArrayList<Integer> list new ArrayList<>();preOrder(root, list);int[] res new int[list.size()];fo…...

回归预测 | MATLAB实现TCN-BiLSTM时间卷积双向长短期记忆神经网络多输入单输出回归预测

回归预测 | MATLAB实现TCN-BiLSTM时间卷积双向长短期记忆神经网络多输入单输出回归预测 目录 回归预测 | MATLAB实现TCN-BiLSTM时间卷积双向长短期记忆神经网络多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现TCN-BiLSTM时间卷积…...

Linux 系列 常见 快捷键总结

强制停止 Ctrl C 退出程序、退出登录 Ctrl D 等价 exit 查看历史命令 history !命令前缀&#xff0c;自动匹配上一个命令 &#xff08;历史命令中&#xff1a;从最新——》最老 搜索&#xff09; ctrl r 输入内去历史命令中检索 # 回车键可以直接执行 ctrl a 跳到命令开头 …...

OA系统构建排座

目录 一.排座的介绍&#xff0c;作用 1.排座介绍 A.前端实现 B.数据库实现 C.后端实现 2.排座作用 A.座位预订 B.座位安排 C. 实时座位状态显示 二.利用Layui实现排座 1.基础版(通过htmlcssjs实现) A.基础版源码&#xff08;html&#xff09;&#xff1a; 2.进阶版 …...

微信小程序 居中、居右、居底和横向、纵向布局,文字在图片中间,网格布局

微信小程序居中、居右、横纵布局 1、水平垂直居中&#xff08;相对父类控件&#xff09;方式一&#xff1a;水平垂直居中 父类控件&#xff1a; display: flex;align-items: center;//子控件垂直居中justify-content: center;//子控件水平居中width: 100%;height: 400px //注意…...

【C++】总结2

文章目录 1.final和override关键字2.extern "C"的用法3.野指针和垂悬指针(悬空指针)4.指针指向的内存被释放是什么意思5.C和C的类型安全6.C中的重载、重写&#xff08;覆盖&#xff09;和隐藏的区别 1.final和override关键字 final和override是C11引入的关键字&…...

vue2项目中使用svg图标

在开发项目的时候经常会用到svg矢量图,而且我们使用SVG以后&#xff0c;页面上加载的不再是图片资源, 这对页面性能来说是个很大的提升&#xff0c;而且我们SVG文件比img要小的很多&#xff0c;放在项目中几乎不占用资源。 1、安装SVG依赖插件并配置加载器和路径 npm instal…...

阿里云盘自动每日签到无需部署无需服务器(仅限学习交流使用)

一、前言 阿里云盘自动每日签到&#xff0c;无需部署&#xff0c;无需服务器 执行思路&#xff1a;使用金山文档的每日定时任务&#xff0c;执行阿里云盘签到接口。 二、效果展示&#xff1a; 三、步骤&#xff1a; 1、进入金山文档网页版 金山文档官网&#xff1a;https:…...

Blazor前后端框架Known-V1.2.7

V1.2.7 Known是基于C#和Blazor开发的前后端分离快速开发框架&#xff0c;开箱即用&#xff0c;跨平台&#xff0c;一处代码&#xff0c;多处运行。 Gitee&#xff1a; https://gitee.com/known/KnownGithub&#xff1a;https://github.com/known/Known 概述 基于C#和Blazor…...

工业边缘计算为什么?

在工厂环境中使用边缘计算并不新鲜。可编程逻辑控制器&#xff08;PLC&#xff09;、微控制器、服务器和PC进行本地数据处理&#xff0c;甚至是微型数据中心都是边缘技术&#xff0c;已经在工厂系统中存在了几十年。在车间里看到的看板系统&#xff0c;打卡系统&#xff0c;历史…...

Training-Time-Friendly Network for Real-Time Object Detection 论文学习

1. 解决了什么问题&#xff1f; 目前的目标检测器很少能做到快速训练、快速推理&#xff0c;并同时保持准确率。直觉上&#xff0c;推理越快的检测器应该训练也很快&#xff0c;但大多数的实时检测器反而需要更长的训练时间。准确率高的检测器大致可分为两类&#xff1a;推理时…...

HTTP改HTTPS

tomcat中http协议改https 第一步&#xff0c;配置server.xml <?xml version"1.0" encoding"UTF-8"?> <Server port"8005" shutdown"SHUTDOWN"><Listener className"org.apache.catalina.startup.VersionLogger…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增&#xff1a;通道注意力模块&#xff08;SE模块&#xff09; class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...

基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解

JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用&#xff0c;结合SQLite数据库实现联系人管理功能&#xff0c;并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能&#xff0c;同时可以最小化到系统…...

Linux nano命令的基本使用

参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时&#xff0c;显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...

破解路内监管盲区:免布线低位视频桩重塑停车管理新标准

城市路内停车管理常因行道树遮挡、高位设备盲区等问题&#xff0c;导致车牌识别率低、逃费率高&#xff0c;传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法&#xff0c;正成为破局关键。该设备安装于车位侧方0.5-0.7米高度&#xff0c;直接规避树枝遮…...