武林风云之一个shell同时维护多个设备

仅以此文纪念linux中国
小y最近真的颓废了,马上就三十了,一下班整个人跟个废物一样,躺在住处刷B站,太颓废了。哎,我想这今年就收手博客了,后续不再更新。但是人不能这样,人需要和懒惰做斗争,失败归失败,态度要有。
小y最近在同时维护多台一样的设备,每次升级版本都要修改配置内容,现在就维护一点设备我都累的不行了,我想万一后期设备多了那我还睡觉吗,于是我写出此博文共大家参考。
既然在后台改参数那必须要用vim或者nano工具,但是这工具不适合写在脚本里,于是我这边还是会用之前脚本用到的工具。
假设,在设备上存在1至6 这六个文件,我需要将6台设备的ip逐一修改,并将网关统一修改且需要使用echo 输出的hellow word 改为hello y。
在这里插入图片描述因为设备出场就是默认配置,所以这里就以上述文件演示。
一阳指之sed修改文件
sed也是文本编辑器,但是sed是可以用命令直接编辑文件的,这里我们使用的参数有

sed -i 其中i表示文本内容替换,如果不加i的话,修改内容不生效 

在这里插入图片描述
不加i就是不会替换内部文件的内容,等确认无误后在加i。
在这里插入图片描述

sed -e 是表示可以同时替换多个内容,当然我亲测后不加e也是可以的

在这里插入图片描述
有时使用也会要将/mnt/USB1改成/mnt/USB2,但是在文档中有/,那么这个sed该怎么写呢?
当然是使用转义符了,及\,那么我们实验如下:
在这里插入图片描述

总结sed的用法

sed -i -e 's(替换的行号,若不加数字表示全文替换)/文本原本内容/需要替换的内容/g;s/()/()/g' 文本名称

在这里插入图片描述
已将一个设备的改好了,同时维护多个设备呢?要求ip累加,y后面跟设备号。
韩轮棍法之for循环
先看下6个文件的全部内容,确实都是出场设置
在这里插入图片描述
然后我想要不这样写吧
在这里插入图片描述

使用for循,查看打印,为理想打印
在这里插入图片描述
这么看现在设备可以自己按需求修改ip了,那接下来我是不是应该要到对于设备的IP下去改文件?
首先要保障我的设备可以ping通。
这里有个小技巧就是

ping -w 为ping的次数 比如 ping -w 3 192.168.1.21

在这里插入图片描述
设备会自动停止ping。
这里使用if判断设备是否可以ping通。
凌波微步之if判断
我是这么想的如果ping通则打印y否则则打印n,我将试列写出
在这里插入图片描述
此时正常打印
在这里插入图片描述
错误打印是这样的
在这里插入图片描述
这里用两个ip做实验当然我们的文件名也要改
在这里插入图片描述
运行脚本观察结果
在这里插入图片描述
结果正常。
佛山无影脚之scp将改好的文件逐步放置设备指定位置
小y的设备没有expect这个程序,这就让人很难受了,但是现场的设备是真的多,我随机问客户要个设备,发现他们的服务器都有expext,我猜这一定是他们的维护人员自己偷偷装的吧。
scp的用法很简单,scp就是cp不过路径是网络路径罢了。这里举个栗子。

scp -r xiaoy root@192.168.49.128:/home

这句话就是把xiaoy放到home下。实验结果如下。
在这里插入图片描述
确实把xiaoy的文件移动过去了,但是每次移动要输入密码,这就很麻烦。还好有expect
其中需要掌握

  1. spawn,这个命令是启动新的进程。
  2. expect,从进程接收字符串。
  3. send,用于向进程发送字符串。
    可以参照我这样写。
    在这里插入图片描述
    按照此图,可以顺利将文件传输至指定位置。
    最后,我需要集大成,将脚本发送至指定位置。
    九阳神功之大集成
    将上述内容集成,然后就会大成功,接下来请欣赏结果!
    在这里插入图片描述

哈中间又换了几个虚拟机,不过问题不大,话说arch没ifconfig真的难用。开始运行。

在这里插入图片描述
运行结果和我期望值是一样的,哈哈!
我又神之一笔,将之前改过的文件复原
在这里插入图片描述

查看下结果
在这里插入图片描述
结果符合预期。
补充几个知识点,如何给linux增加新的ip,在debian系中,增加ip用

ip address add 192.168.1.2/24 dev eth0

运行route后查看结果。
在这里插入图片描述
顺带提一嘴END后面不要有任何空格或者制表符,要不然会报错。
实验代码下载处:

https://download.csdn.net/download/qq_43161960/89130999

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

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

相关文章

Python学习笔记25 - 一些案例

1. 输出金陵前五钗 2. 向文件输出信息 3. 打印彩色字 4. print函数、进制转换 5. 猜数游戏 6. 输出ASCII码对应的字符 7. 计算100~999之间的水仙花数 8. 千年虫数组的索引及其值 9. 星座zip dict 10. 12306车次信息 11. 字符串的格式化 12. 手动抛出异常 13. 计算圆的面积和周长…

源码安装 clr - hip runtime

1,下载 HIP 源代码 git clone --recursive https://github.com/ROCm/HIP.git cd HIP/ git checkout rocm-6.0.2 pwd export HIP_COMMON_DIR${PWD} cd ../ 2,下载 clr 源码 git clone --recursive https://github.com/ROCm-Developer-Tools/clr.git cd c…

杰发科技AC7840——CAN通信简介(4)_过滤器设置

0. 简介 注意:过滤器最高三位用不到,因此最高位随意设置不影响过滤器。 1. 代码分析 注意设置过滤器数量 解释的有点看不懂 详细解释...也看不大懂 Mask的第0位是0,其他位都是1(就是F?),那就指定了接收值就是这个数,…

Qt状态机

基本概念 QStateMachine:管理一组状态和转换的状态机。QState:表示状态机中的一个状态。QSignalTransition:根据发射的信号触发状态之间的转换。 示例逻辑 假设您有三个主要状态:值守(Daemon)、做样&…

小程序 安卓连接wifi成功,提示消息为失败

解决方案: forceNewApi: true, uni.connectWifi({forceNewApi: true,SSID: this.SSID,password: this.password,success: (res) > {console.log(res, "连接成功");},fail: (err) > {console.log(err);},}); 加上这话就返回正常数据了

版本控制工具Git的使用

1、Git的基本概念和使用 1、Git是什么? ● Git: 是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。 ● GitHub: 全球最大的面向开源及私有软件项目的托管平台,免费注册并且可以免费托管开源代码。 ● GitLab:与GitHub类似&a…

二分查找的边界问题是怎么产生的?

总结:二分查找的目标有两个,一个是左区件的右边界,一个是右区间的左边界 如何去理解二分的过程? 如果要查找的是左区间的右边界: 可以将[l, r]理解一个集合,这个集合范围内的数都有可能是最后需要得到的…

打不动的蓝桥杯

打不动的蓝桥杯 2024-4-13 今天的蓝桥杯打得很烂,8题写了4题,100分可能有20来分吧。我写了的题好像都很简单,没什么竞争力。又觉得我知道的东西不止这么点,没能发挥。 这次比赛,首先,有强烈的陌生感。pytho…

【C++核心】C++中的对象

C中的对象 一、对象的初始化和清理1. 构造函数和析构函数1.1 构造函数简介1.2 构造函数1.3 析构函数1.4 代码样例1.5 默认实现 2. 构造函数的分类及调用2.1 构造函数的分类2.2 构造函数的调用方式2.3 匿名函数 3. 拷贝构造函数调用时机4. 构造函数的规则5. 深拷贝和浅拷贝6. 初…

ChatGLM3初体验

mac本地化部署ChatGLM3 写在前面环境准备1. python环境2. 安装第三方依赖torch3.下载模型 代码准备1.clone代码 run效果 写在前面 建议直接去看官方文档 https://github.com/THUDM/ChatGLM3?tabreadme-ov-file 环境准备 1. python环境 python -V ## 3.11.42. 安装第三方依…

标注平台工作流:如何提高训练数据质量与管理效率

世界发展日益依托数据的驱动,企业发现,管理不断增长的数据集却愈发困难。数据标注是诸多行业的一个关键过程,其中包括机器学习、计算机视觉和自然语言处理。对于大型语言模型(LLM)来说尤是如此,大型语言模型…

前端面试问题汇总 - Vue篇

1. Vue 的生命周期有哪些,每个阶段分别做什么操作? beforeCreate: 在实例初始化之后、数据观测和事件配置之前被调用。此时数据对象 data 和事件(methods)都还未初始化。一般不在此阶段进行数据初始化和 DOM 操作。cre…

为什么我们应该切换到Rust

What is RUST? 什么是Rust? Rust is a programming language focused on safety, particularly safe concurrency, supporting functional and imperative-procedural paradigms. Rust is syntactically similar to C, but it provides memory safety without usi…

[大模型]Yi-6B-chat WebDemo 部署

Yi-6B-chat WebDemo 部署 Yi 介绍 由60亿个参数组成的高级语言模型 Yi LLM。为了促进研究,Yi 已经为研究社区开放了Yi LLM 6B/34B Base 和 Yi LLM 6B/34B Chat。 环境准备 在autodl平台中租一个3090等24G显存的显卡机器,如下图所示镜像选择PyTorch–…

leecode438 | 找到所有字符串中的异位词

题意大致是&#xff0c;给定两个字符串&#xff0c;s 和 p 其中 要在s 中找到由p的元素组成的子字符串&#xff0c;记录子字符串首地址 class Solution { public:vector<int> findAnagrams(string s, string p) {int m s.size(), n p.size();if(m < n)return {};vec…

vue-router 原理【详解】hash模式 vs H5 history 模式

hash 模式 【推荐】 路由效果 在不刷新页面的前提下&#xff0c;根据 URL 中的 hash 值&#xff0c;渲染对应的页面 http://test.com/#/login 登录页http://test.com/#/index 首页 核心API – window.onhashchange 监听 hash 的变化&#xff0c;触发视图更新 window.onhas…

谷歌关键词优化全攻略提高曝光率-华媒舍

现如今&#xff0c;互联网已成为信息获取的主要渠道&#xff0c;而搜索引擎则是人们寻找信息的首选工具之一。其中&#xff0c;谷歌作为全球最大的搜索引擎&#xff0c;其搜索结果的排名直接影响着网站的曝光率和流量。了解并掌握谷歌关键词优化的技巧&#xff0c;成为提升网站…

Vue项目打包:禁止生成sourceMap文件

Vue项目在打包过程中&#xff0c;默认会生成sourceMap文件。 sourceMap的主要作用是让打包后的文件像未压缩的代码一样&#xff0c;方便调试和定位错误。然而&#xff0c;在生产环境中我们通常不需要这些文件&#xff0c;因为它们会增加应用程序的体积。 可以在vue.config.js…

MySQL-多表查询:多表查询分类、SQL99语法实现多表查询、UNION的使用、7种SQL JOINS的实现、SQL99语法新特性、多表查询SQL练习

多表查询 1. 一个案例引发的多表连接1.1 案例说明1.2 笛卡尔积&#xff08;或交叉连接&#xff09;的理解1.3 案例分析与问题解决 2. 多表查询分类讲解分类1&#xff1a;等值连接 vs 非等值连接等值连接非等值连接 分类2&#xff1a;自连接 vs 非自连接分类3&#xff1a;内连接…

团结引擎+OpenHarmony 1配置篇

团结引擎OpenHarmony 1 配置篇 app团结鸿蒙化第一课一 DevEco Studio 下载安装二 团结引擎三 出包 app团结鸿蒙化第一课 1 团结引擎配置2 DevEco Studio 配置 一 DevEco Studio 下载安装 申请开发者套件 1 注册华为账号 签署协议 官网 2 认真填写 DevEco Studio 开发套件申请…