linux 免交互

Linux 免交互

  • 1、免交互概念
  • 2、基本免交互的例子
    • 2.1命令行免交互统计
    • 2.2使用脚本免交互统计
    • 2.3使用免交互命令打印
    • 2.4免交互修改密码
    • 2.5重定向查看
    • 2.6重定向到指定文件
    • 2.7重定向直接指定文件
    • 2.8使用脚本完成重定向输入
    • 2.9免交互脚本完成赋值变量
    • 2.10关闭变量替换功能,按照原来样子输出
    • 2.11去tab键,无法去空格
    • 2.12注释打印,无法生效:批量注释
  • 3、expect
    • 3.1脚本解释器
    • 3.2 spawn:启动新的进程并监控和捕捉
    • 3.3 expect :从进程接收字符串
    • 3.4 send:用于向进程发送字符串
    • 3.5 exp_continue:匹配多个字符串在执行动作后加此命令
    • 3.6 expect eof:结束符
    • 3.7 interact:允许用户交互
    • 3.8 set:设置会话超时时间
    • 3.9 send_users:回显命令
    • 3.10 接收参数
  • 4、示例脚本:ssh远程登录

1、免交互概念

概念:对于shell脚本的自动化运维,就要实现免交互来达到自动化运维的效果

2、基本免交互的例子

可以免交互统计出行号

2.1命令行免交互统计

wc -l <<EOF
> a
> b
> c
> d
> EOF
4

在这里插入图片描述

2.2使用脚本免交互统计

cat 1.sh
wc -l <<EOF
a
b
EOF
[root@localhost ~]# sh 1.sh
2

在这里插入图片描述

2.3使用免交互命令打印

[root@localhost ~]# read i <<EOF
> a
> EOF
[root@localhost ~]# echo $i
a
[root@localhost ~]# 

在这里插入图片描述

2.4免交互修改密码

passwd user <<EOF
> 123123
> 123123
> EOF

在这里插入图片描述

2.5重定向查看

cat <<EOF
> 尾声:半个月亮
> 跋:从山峦到海洋
> EOF
尾声:半个月亮
跋:从山峦到海洋

在这里插入图片描述

2.6重定向到指定文件

cat <<EOF>1.txt
尾声:半个月亮
跋:从山峦到海洋
EOF

在这里插入图片描述

2.7重定向直接指定文件

tee 1.txt <<EOF
> 《额尔古纳河右岸》
> EOF
《额尔古纳河右岸》

在这里插入图片描述

2.8使用脚本完成重定向输入

#!/bin/bash
file="1.txt"
i='girl'
cat >$file<<EOF
mws is a $i
EOF

在这里插入图片描述

2.9免交互脚本完成赋值变量

#!/bin/bash
var="Life is fucking move!"
myvar=$(cat<<EOF
人生如戏
$var
EOF
)echo "$myvar"

在这里插入图片描述

2.10关闭变量替换功能,按照原来样子输出

#!/bin/bash
var="Life is fucking move!"
myvar=$(cat<<'EOF'
人生如戏
$var
EOF
)echo "$myvar"

在这里插入图片描述

2.11去tab键,无法去空格

#!/bin/bash
var="Great! I am going to school!"
myvar=$(cat <<-'EOF'this is line 1.today is monday.$var
EOF
)echo $myvar

在这里插入图片描述

2.12注释打印,无法生效:批量注释

脚本展示

#!/bin/bash
i=ab
:<<EOFabcd
abcd
$i
EOF

在这里插入图片描述

命令展示
在这里插入图片描述

3、expect

expect:建立在tcl语言基础上的一个工具,常被用于进行自动化控制和测试,解决shell脚本中交互相关的问题。
使用方法:表示捕捉关键词展示行

3.1脚本解释器

加入引用程序路径表示使用expect,表明使用这个shell
运行只能使用./运行,运行前赋权777

#!/usr/bin/expect

3.2 spawn:启动新的进程并监控和捕捉

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

3.3 expect :从进程接收字符串

  • 判断上次输出结果中是否包含指定的字符串,如果有则立即返回,否则就等待超时时间后返回;
  • 只能捕捉由sawn启动的进程的输出;
  • 用于接收命令执行后的输出,然后和期望的字符串匹配

3.4 send:用于向进程发送字符串

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

方式一:

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

方式二:

expect"密码										#换行send部分不需要有{ ) 
send "abc123\r"

方式三:expect支持多个分支

expect											#只要匹配了其中一个情况,执行相应的send语句后退出该expect语句
{											
"密码1" {send "123123\r"}
"密码2" {send "abcdef\r"}
"密码3" {send "abc123\r"}
}

3.5 exp_continue:匹配多个字符串在执行动作后加此命令

exp_continue 附加于某个 expect 判断项之后,可以使该项被匹配后,还能继续匹配该 expect 判断语句内的其他项。
exp_continue类似于控制语句中的 continue 语句。表示允许 expect 继续向下执行指令。

注意∶ 使用exp_continue时,如果跟踪像 passwd 这样的输入密码后就结束进程的命令,expect{}外不要再加上expect eof因为spawn进程结束后会默认向expect发送eof, 会导致后面的 expect eof 执行报错

3.6 expect eof:结束符

表示交互结束,等待执行结束,退回到原用户,与spawn对应。

比如切换到root用户,expect脚本默认的是等待10s当执行完命令后,默认停留10s后,自动切回了原用户

3.7 interact:允许用户交互

  • 会停留在目标终端而不会退回到原终端,这个时候就可以手工操作了,interact后的命.令不起作用;
  • 比如interact后添加exit,并不会退出root用户。而如果没有interact则登录完成后会退出,而不是留在远程终端上。
  • 使用interact会保持在终端而不会退回到原终端;
    注意∶ expect eof 与 interact 只能二选一

3.8 set:设置会话超时时间

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

3.9 send_users:回显命令

表示回显命令,相当于 echo

3.10 接收参数

expect 脚本可以接受从bash命令行传递参数,使用 [ lindex $argv n ] 获得。其中你从0开始,分别表示第一个,第二个,第三个…参数

set hostname [lindex $argv 0]						#相当于 hostname=s§1				
set password [lindex Sargv 1]						#相当于 password=$2				

4、示例脚本:ssh远程登录

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/48437.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云计算在IT领域的发展和应用

文章目录 云计算的发展历程云计算的核心概念云计算在IT领域的应用1. 基础设施即服务&#xff08;IaaS&#xff09;&#xff1a;2. 平台即服务&#xff08;PaaS&#xff09;&#xff1a;3. 软件即服务&#xff08;SaaS&#xff09;&#xff1a; 云计算的拓展应用结论 &#x1f3…

如何进行在线pdf转ppt?在线pdf转ppt的方法

在当今数字化时代&#xff0c;PDF文件的广泛应用为我们的工作和学习带来了巨大的便利。然而&#xff0c;有时候我们可能需要将PDF转换为PPT文件&#xff0c;以便更好地展示和分享内容。在线PDF转PPT工具因其操作简便、高效而备受欢迎。如何进行在线pdf转ppt呢?接下来&#xff…

fatal: not a git repository (or any of the parent directories): .git

提示说没有.git这样一个目录 在命令行 输入 git init 然后回车就好了 git remote add origin https:/.git git push -u origin "master"

《Java极简设计模式》第04章:建造者模式(Builder)

作者&#xff1a;冰河 星球&#xff1a;http://m6z.cn/6aeFbs 博客&#xff1a;https://binghe.gitcode.host 文章汇总&#xff1a;https://binghe.gitcode.host/md/all/all.html 源码地址&#xff1a;https://github.com/binghe001/java-simple-design-patterns/tree/master/j…

Node.js下载安装及环境配置教程

一、进入官网地址下载安装包 https://nodejs.org/zh-cn/download/ 选择对应你系统的Node.js版本&#xff0c;这里我选择的是Windows系统、64位 Tips&#xff1a;如果想下载指定版本&#xff0c;点击【以往的版本】&#xff0c;即可选择自己想要的版本下载 二、安装程序 &a…

【Apollo学习笔记】——规划模块TASK之PATH_REUSE_DECIDER

文章目录 前言PATH_REUSE_DECIDER功能简介PATH_REUSE_DECIDER相关配置PATH_REUSE_DECIDER总体流程PATH_REUSE_DECIDER相关子函数IsCollisionFreeTrimHistoryPathIsIgnoredBlockingObstacle和GetBlockingObstacleS Else参考 前言 在Apollo星火计划学习笔记——Apollo路径规划算…

Hive Cli / HiveServer2 中使用 dayofweek 函数引发的BUG!

文章目录 前言dayofweek 函数官方说明BUG 重现Spark SQL 中的使用总结 前言 使用的集群环境为&#xff1a; hive 3.1.2spark 3.0.2 dayofweek 函数官方说明 dayofweek(date) - Returns the day of the week for date/timestamp (1 Sunday, 2 Monday, …, 7 Saturday). …

数据封装与解封装过程

2.2数据封装与解封装过程(二) 如果网络世界只有终端设备&#xff0c;那么将不能称之为网络。正因为有很多中转设备才形成了今天如此复杂的Internet网络&#xff0c;只不过一贯作为网络用户的我们没有机会感知它们的存在&#xff0c;这都是传输层的“功劳”&#xff0c;由于传输…

在外SSH远程连接macOS服务器

文章目录 前言1. macOS打开远程登录2. 局域网内测试ssh远程3. 公网ssh远程连接macOS3.1 macOS安装配置cpolar3.2 获取ssh隧道公网地址3.3 测试公网ssh远程连接macOS 4. 配置公网固定TCP地址4.1 保留一个固定TCP端口地址4.2 配置固定TCP端口地址 5. 使用固定TCP端口地址ssh远程 …

科技云报道:云计算下半场,公有云市场生变,私有云风景独好

科技云报道原创。 大数据、云计算、人工智能&#xff0c;组成了恢弘的万亿级科技市场。这三个领域&#xff0c;无论远观近观&#xff0c;都如此性感和魅力&#xff0c;让一代又一代创业者为之杀伐攻略。 然而高手过招往往一瞬之间便已胜负知晓&#xff0c;云计算市场的巨幕甫…

测试框架pytest教程(11)-pytestAPI

常量 pytest.__version__ #输出pytest版本 pytest.version_tuple #输出版本的元组形式 功能 pytest.approx pytest.approx 是一个用于进行数值近似比较的 pytest 断言工具。 在测试中&#xff0c;有时候需要对浮点数或其他具有小数部分的数值进行比较。然而&#xff0c;由于…

Node.JS教程

文章目录 Node.JSNode.js学习指南一、Node.js基础1.认识Node.js2.开发环境搭建3. 模块、包、commonJS3.1、为什么要有模块化开发&#xff1f;3.2、CommonJS规范3.3、 modules模块化规范写法 总结 Node.JS Node.js学习指南 服务端开发底层平台周边生态 学习前提 JavaScript、E…

Rspack 创建 vue2/3 项目接入 antdv(rspack.config.js 配置 less 主题)

一、简介 Rspack CLI 官方文档。 rspack.config.js 官方文档。 二、创建 vue 项目 创建项目&#xff08;文档中还提供了 Rspack 内置 monorepo 框架 Nx 的创建方式&#xff0c;根据需求进行选择&#xff09; # npm 方式 $ npm create rspacklatest# yarn 方式 $ yarn create…

html动态爱心代码【二】(附源码)

目录 前言 效果演示 内容修改 完整代码 总结 前言 七夕马上就要到了&#xff0c;为了帮助大家高效表白&#xff0c;下面再给大家带来了实用的HTML浪漫表白代码(附源码)背景音乐&#xff0c;可用于520&#xff0c;情人节&#xff0c;生日&#xff0c;表白等场景&#xff0c…

Android 面试之Glide做了哪些优化?

前言 Glide可以说是最常用的图片加载框架了&#xff0c;Glide链式调用使用方便&#xff0c;性能上也可以满足大多数场景的使用&#xff0c;Glide源码与原理也是面试中的常客。 但是Glide的源码内容比较多&#xff0c;想要学习它的源码往往千头万绪&#xff0c;一时抓不住重点.…

shell脚本免交互

一.Here Document免交互 1.免交互概述 使用I/O重定向的方式将命令列表提供给交互式程序 是一种标准输入&#xff0c;只能接收正确的指令或命令 2.格式&#xff1a; 命令 <<标记 ....... 内容 #标记之间是传入内容 ....... 标记 注意事项 标记可以使用任意的合法…

mybatisplus批量写入

1.新建MybatisPlusConfig /*** MybatisPlusConfig.*/ Configuration MapperScan("com.test.mapper") public class MybatisPlusConfig {/*** 自定义批量插入 SQL 注入器.*/Beanpublic InsertBatchSqlInjector insertBatchSqlInjector() {return new InsertBatchSqlI…

WPF 项目中 MVVM模式 的简单例子说明

一、概述 MVVM 是 Model view viewModel 的简写。MVVM模式有助于将应用程序的业务和表示逻辑与用户界面清晰分离。 几个概念的说明&#xff1a; model :数据&#xff0c;界面中需要的数据&#xff0c;最好不要加逻辑代码view : 视图就是用户看到的UI结构 xaml 文件viewModel …

一文了解汽车芯片的分类及用途介绍

汽车芯片按其功能可分为控制类&#xff08;MCU和AI芯片&#xff09;、功率类、传感器和其他&#xff08;如存储器&#xff09;四种类型。市场基本被国际巨头所垄断。人们常说的汽车芯片是指汽车里的计算芯片&#xff0c;按集成规模可分为MCU芯片和AI芯片&#xff08;SoC芯片&am…

Lua之Lua源文件批量转换为luac字节码文件

准备的工具&#xff1a;luac.exe CSDNhttps://mp.csdn.net/mp_download/manage/download/UpDetailed Unity版: using System; using System.Collections; using System.Collections.Generic; using System.IO; using UnityEditor; using UnityEngine;public static class Bat…