linux 免交互

news2024/11/22 11:05:58

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
:<<EOF
     abcd
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.coloradmin.cn/o/914368.html

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

相关文章

一分钟学算法-递归-斐波那契数列递归解法及优化

一分钟学一个算法题目。 今天我们要学习的是用递归算法求解斐波那契数列。 首先我们要知道什么是斐波那契数列。 斐波那契数列&#xff0c;又称黄金分割数列&#xff0c;是一个经典的数学数列&#xff0c;其特点是第一项&#xff0c;第二项为1&#xff0c;后面每个数字都是前…

linux iptables安全技术与防火墙

linux iptables安全技术与防火墙 1、iptables防火墙基本介绍1.1netfilter/iptables关系1.2iptables防火墙默认规则表、链结构 2、iptables的四表五链2.1四表2.2五链2.3四表五链总结2.3.1 规则链之间的匹配顺序2.3.2 规则链内的匹配顺序 3、iptables的配置3.1iptables的安装3.2i…

echarts范围限制下性能问题

最近实习遇到一个问题&#xff0c;需要对折线图的数据进行范围限制&#xff0c;比如将超过100的设置为100&#xff0c;低于0的设置为0&#xff1b; 原来的代码是创建一个数组&#xff0c;然后遍历原数组&#xff0c;超过的push100&#xff0c;低于0的push0&#xff0c;在中间的…

python内置函数的源码去哪里找?

python内置函数的源码去哪里找&#xff1f; 我们使用的python内置函数&#xff0c;ctrl鼠标左键&#xff0c;进入源码builtins.py发现&#xff0c;具体的函数实现均是pass了&#xff0c;那这些内置函数的源码去哪里找呢&#xff1f; 研究了一番&#xff0c;发现python语言是c…

R-Meta分析核心技术教程

详情点击链接&#xff1a;全流程R-Meta分析核心技术教程 一&#xff0c;Meta分析的选题与检索 1、Meta分析的选题与文献检索 1)什么是Meta分析 2)Meta分析的选题策略 3)精确检索策略&#xff0c;如何检索全、检索准 4)文献的管理与清洗&#xff0c;如何制定文献纳入排除标准 …

边缘计算网关是如何提高物联网的效率的?

随着物联网的持续发展&#xff0c;物联网应用的丰富和规模的扩大&#xff0c;带来了海量的数据处理、传输和计算需求。 传统的“数据中央处理”模式越来越难以适应物联网的扩展速度&#xff0c;在这一趋势下&#xff0c;边缘计算在物联网系统的部署运营中就发挥出了显著的增效…

idea连接linux远程docker详细教程操作

1&#xff1a;修改docker配置文件docker.service vi /usr/lib/systemd/system/docker.service2&#xff1a;找到 ExecStart&#xff0c;在最后面添加 -H tcp://0.0.0.0:2375 # for containers run by docker ExecStart/usr/bin/dockerd -H fd:// --containerd/run/containerd/…

【分布式技术专题】「分布式ID系列」百度开源的分布式高性能的唯一ID生成器UidGenerator

UidGenerator是什么 UidGenerator是百度开源的一款分布式高性能的唯一ID生成器&#xff0c;更详细的情况可以查看官网集成文档 uid-generator是基于Twitter开源的snowflake算法实现的一款唯一主键生成器(数据库表的主键要求全局唯一是相当重要的)。要求java8及以上版本。 snow…

启英泰伦通话降噪方案,采用深度学习降噪算法,让通话更清晰

生活中的通话应用场景无处不在&#xff0c;如电话、对讲机、远程会议、在线教育等。普遍存在的问题是环境噪音、干扰声导致通话声音不清晰&#xff0c;语音失真等。 为了解决这一问题&#xff0c;启英泰伦基于自适应线性滤波联合非线性滤波的回声消除方案和基于深度学习的降噪…

基于CNN卷积神经网络的目标识别matlab仿真,数据库采用cifar-10

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2022a 3.部分核心程序 ....................................................................... %定义网络层 lay…

vue项目配置git提交规范

vue项目配置git提交规范 一、背景介绍二、husky、lint-staged、commitlint/cli1.husky2.lint-staged3.commitlint/cli 三、具体使用1.安装依赖2.运行初始化脚本3.在package.json中配置lint-staged4.根目录新增 commitlint.config.js 4.提交测试1.提示信息格式错误时2.eslint校验…

Android Studio调试出现错误时,无法定位错误信息解决办法

做项目时运行项目会出现问题&#xff0c;但是找不到具体位置&#xff0c;如下图所示&#xff1a;感觉是不是很懵逼~&#xff0c;Log也没有显示是哪里的问题 解决方案&#xff0c;在右侧导航栏中选择Gradle——app——build&#xff0c;然后点击运行 运行结果如下&#xff0c;很…

LLMs训练的算力优化Computational challenges of training LLMs

当您尝试训练大型语言模型时&#xff0c;您仍然经常遇到的最常见问题之一是内存不足。如果您曾尝试在Nvidia GPU上训练或甚至只是加载模型&#xff0c;那么这个错误消息可能看起来很熟悉。 CUDA&#xff0c;即Compute Unified Device Architecture的缩写&#xff0c;是为Nvid…

Lnton羚通云算力平台OpenCV-PythonCanny边缘检测教程

Canny 边缘检测是一种经典的边缘检测算法&#xff0c;由 John F. Canny 在 1986 年提出。它被广泛应用于计算机视觉和图像处理领域&#xff0c;用于检测图像中的边缘。 ​【原理】 1. 去噪 由于边缘检测非常容易收到图像的噪声影响&#xff0c;第一步使用 5x5 高斯滤波去除图…

【Linux】数据链路层:以太网协议

约束不等于压迫&#xff0c;冷静和理性不等于冷淡和麻木。 文章目录 一、以太网帧 和 局域网转发数据包1.局域网转发的原理&#xff08;基于以太网协议&#xff09;2.以太网MTU与MAC地址 二、局域网中的数据碰撞1.如何解决局域网中的数据碰撞&#xff1f;&#xff08;碰撞检测和…

[保研/考研机试] KY223 二叉排序树 华中科技大学复试上机题 C++实现

题目链接&#xff1a; 二叉排序树_牛客题霸_牛客网输入一系列整数&#xff0c;建立二叉排序树&#xff0c;并进行前序&#xff0c;中序&#xff0c;后序遍历。。题目来自【牛客题霸】https://www.nowcoder.com/share/jump/437195121692722441741 描述 输入一系列整数&#x…

springMVC之视图

文章目录 前言一、ThymeleafView二、转发视图三、重定向视图四、视图控制器view-controller五、补充总结 前言 SpringMVC中的视图是View接口&#xff0c;视图的作用渲染数据&#xff0c;将模型Model中的数据展示给用户。 SpringMVC视图的种类很多&#xff0c;默认有转发视图和…

原生轮播图的实现

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>轮播图</title><style>* {margin: 0;pad…

【网络】IP网络层和数据链路层

IP协议详解 1.概念 1.1 四层模型 应用层&#xff1a;解决如何传输数据&#xff08;依照什么格式/协议处理数据&#xff09;的问题传输层&#xff1a;解决可靠性问题网络层&#xff1a;数据往哪里传&#xff0c;怎么找到目标主机数据链路层&#xff08;物理层&#xff09;&…

C++:list使用以及模拟实现

list使用以及模拟实现 list介绍list常用接口1.构造2.迭代器3.容量4.访问数据5.增删查改6.迭代器失效 list模拟实现1.迭代器的实现2.完整代码 list介绍 list是一个类模板&#xff0c;加<类型>实例化才是具体的类。list是可以在任意位置进行插入和删除的序列式容器。list的…