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

马哥sre云计算运维第4次作业

一、解析/etc/sysconfig/network-scripts/ifcfg-eth0配置格式TYPEEthernet# 网络类型这里为以太网类型PROXY_METHODnone# 代理方法没有BROWSER_ONLYno# 只浏览器使用 否 如果只是配置网卡的话没啥用可以去掉BOOTPROTOnone# 启动协议: 无或者写成static不使用DHCP自动获取IP是静态配置方式DEFROUTEyes# 默认路由 启用IPV4_FAILURE_FATALno# ipv4故障致命性否(关于ipv4配置失败会不会导致网络启动失败)IPV6INITyes# ipv6初始化是启用ipv6IPV6_AUTOCONFyes# ipv6自动配置是系统自动配置ipv6地址IPV6_DEFROUTEyes# ipv6默认路由是ipv6的路由IPV6_FAILURE_FATALno# ipv6故障致命性否(关于ipv6配置失败会不会导致网络启动失败)IPV6_ADDR_GEN_MODEstable-privacy# IP地址生成模式NAMEeth0# 网络接口名称UUIDxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx# 网络接口的唯一标识符DEVICEeth0# 设备名称与网络接口名称一致ONBOOTno# 开启时自启动IPADDR10.0.0.13# ipv4地址静态配置的、PREFIX24# IP地址掩码GATEWAY10.0.0.2# 默认网关DNS110.0.0.2# DNS服务器地址DNS28.8.8.8# 次选DNS二、使用脚本判断 你主机所在网络内在线的主机IP有哪些 ping通则在线。[rootRocky10-12 ~]# cat -n testPing.sh1#!/bin/bash2# *********************************3# * 功能测试网络内在线的主机IP4# * 作者王波5# * 联系wangboqq.com6# * 版本2026-04-267# *********************************89# 网络位10ip_network10.0.011# 在线主机数初始化12online_hosts01314# 这里简单点24位的掩码所以有254个主机15foriin{1..254}16do17# 后台ping-c ping一次-w 等待1s不加的话需要等待10s18ping-c1-w1${ip_network}.${i}/dev/null2119# 判断上次执行命令的效果20if[$?-eq0]21then22# 成功输出ip并且总数加123echo${ip_network}.${i}在线24((online_hosts))25else26echo${ip_network}.${i}不在线27fi28done2930printf总共有%d台主机在线$online_hosts结果[rootRocky10-12 ~]# /bin/bash testPing.sh10.0.0.1 在线10.0.0.2 在线10.0.0.3 不在线10.0.0.4 不在线10.0.0.5 不在线10.0.0.6 不在线10.0.0.7 不在线10.0.0.8 不在线10.0.0.9 不在线10.0.0.10 不在线10.0.0.11 不在线10.0.0.12 在线10.0.0.13 在线10.0.0.14 不在线10.0.0.15 不在线10.0.0.16 不在线10.0.0.17 不在线10.0.0.18 不在线10.0.0.19 不在线10.0.0.20 不在线10.0.0.21 不在线10.0.0.22 不在线10.0.0.23 不在线10.0.0.24 不在线10.0.0.25 不在线10.0.0.26 不在线10.0.0.27 不在线10.0.0.28 不在线10.0.0.29 不在线10.0.0.30 不在线 总共有4台主机在线三、使用while read line和/etc/passwd计算用户id总和。1#!/bin/bash2# *********************************3# * 功能计算id总和4# * 作者王波5# * 联系wangboqq.com6# * 版本2026-04-267# *********************************89# 用户总数初始化10id_sum01112# 循环的方式逐行提取13whilereadline14do15# $()执行命令然后复制给uid变量. 将单行字符串重定向16uid$(cut-d:-f3${line})17# 判断是否大于100018if[${uid}-gt1000]19then20echo${uid}21# 如果大的话就自增22((id_sum))23fi24done/etc/passwd2526printf用户个数总共为%d${id_sum}结果[rootRocky10-12 ~]# /bin/bash calac_id_nums.sh6553410011002100310041005用户个数总共为6四、总结索引数组和关联数组字符串处理高级变量使用及示例。数组有序的元素序列它将有限个类型相同的数据放到一个集合中这个集合就是数组。数组样式一维数组数组[下标]二位数组数组[行下标][列下标]三位数组数组[行下标][列下标][页下标]bash支持一维数组(不支持多维数组)并且没有限定数组的大小。数组元素的下标由0开始编号。下标可以是整数或算术表达式其值应大于或等于0数组的创建用括号来表示数组数组元素用空格符号分割开array_name(value1 ... valuen)有单行定义、多行定义、单元素定义、命令定义等多种样式单行定义array_name(value0 value1 value2 value3)多行定义array_name(value0 value1 value2 value3)单元素定义:array_name[0]value单元素定义的时候可以不使用连续的下标而且下标的范围没有限制.命令定义:是value的值以命令方式来获取array($(ls /tmp/))数组取值获取内容读取数组元素值可以根据元素的下标值来获取${array_name[index]}${array_name[]:起始位置:获取数量}获取所有的元素内容下标位置写“或者”*获取数组索引${!array_name[index]}获取所有的元素位置下标位置写“或者”*获取数组长度的方法与获取字符串长度的方法相同${#array_name[index]}获取具体的元素长度指定其下标值从0开始获取所有的元素个数下标位置写“或者”*数组变动:元素修改:元素内容替换array_name[index]值元素部分内容替换可以参考字符串替换格式:${array_name[index]/原内容/新内容}默认是演示效果原数组未被修改如果真要更改需要结合单元素内容替换元素删除使用unset来实现删除单元素:unset array_name[index]删除整个数组:unset array_name支持同时删除多个数组名字数组关联数组的定制主要有两种2. 定制索引数组 - 数组的索引是普通的数字1.declare -a array_name2. 普通数组可以不事先声明,直接使用3. 定制关联数组 - 数组的索引是自定义的字母1.declare -A array_name2. 关联数组必须先声明,再使用不然就是将索引数组转换为关联数组但是他们之间不可以相互转换。bash [rootRocky10-12 ~ ]# aaa([yingyu]32 [yuwen]67 [shuxue]65) 当前位置 ~ [rootRocky10-12 ~ ]# declare -A aaa -bash: declare: aaa: 无法将索引数组转换为关联数组字符串基础知识字符串计数:${#file}获取字符串的长度在shell环境中默认情况下会将所有的信息都认为是 字符串。字符串截取:${var:pos:length}变量var从pos开始截取length个字符pos为空表示从0开始${file:0:5}从0开始【第1个字符】截取5个字符${file:5:5}从5开始【第6个字符】截取5个字符${file::5}从0开始【第1个字符】截取5个字符${file:0-6:3}从倒数第6个字符开始截取之后的3个字符${file: -4}返回字符串最后四个字符-前面是空格字符串表达式:内容比较判断:str1 str2判断str1和str2字符串内容一致str1 ! str2判断str1和str2字符串内容不一致!表示相反的意思内容空值判断-z str空值判断获取字符串长度长度为0返回True-n str非空值判断获取字符串长度长度不为0返回True高级变量变量间接引用通过一个变量名去引用另一个变量的值。# 定义一个变量名namevar# 定义实际变量varhello world# 间接引用${!name} 相当于取 $var 的值echo${!name}# 输出hello world# ${!var} 中的 ! 表示间接引用只能用于一层。特殊变量及其高级操作$0, $1, $2… 位置参数$# 参数个数$ 所有参数作为独立字符串$* 所有参数作为单个字符串$? 上一条命令的退出状态$$ 当前 Shell 的 PID五、求10个随机数的最大值与最小值#!/bin/bash# *********************************# * 功能Sehll 脚本模板# * 作者王波# * 联系wangboqq.com# * 版本2026-04-26# *********************************# 定义一个临时存储的值tmp0# 用循环定义一个随即数组里面有十个随机数foriin{1..10}do# (()) 只计算不输出$(())计算后输出random_array[$((i-1))]$RANDOMecho${random_array[$((i-1))]}done# 使用冒泡算法排序# 控制轮数foriin{1..9}doforjin{1..9}doif[${random_array[$((j-1))]}-lt${random_array[$j]}]then# 交换tmp${random_array[$((j-1))]}random_array[$((j-1))]${random_array[$j]}random_array[$j]$tmpfidonedoneecho-----------------------# 输出最大最小值printfmax is %d, min is %d${random_array[0]}${random_array[9]}结果[rootRocky10-12 ~]# /bin/bash random_max_min.sh2812518268207363241610373668940951845644511489----------------------- max is32416, min is1489六、使用递归调用完成阶乘算法实现。#!/bin/bash# *********************************# * 功能Sehll 脚本模板# * 作者王波# * 联系wangboqq.com# * 版本2026-04-26# *********************************factorial(){# 加上local后 每次调用都有独立的 n通过local语法将变量的作用范围限制在一段代码块范围中。localn$1# 基线条件0! 1, 1! 1if[$n-le1];thenecho1else# 递归条件n! n * (n-1)!localsub$((n-1))localsub_result$(factorial $sub)echo$((n*sub_result))fi}# 读取read-p请输入一个非负整数numif[$num-lt0];thenecho错误阶乘只适用于非负整数exit1firesult$(factorial $num)echo${num}! ${result}结果[rootRocky10-12 ~]# /bin/bash factorial.sh请输入一个非负整数66!720七、总结主机到主机的包传递过程。发送方判断是否在同一网段用自己的子网掩码与目标IP做逻辑与运算得到目标网络号再与自己IP和自己的掩码运算得到自己的网络号。若两者相等则在同一网段否则在不同网段。获取下一跳MAC地址若在同一网段目标MAC就是目标主机的MAC发送ARP广播请求目标IP对应的MAC。若在不同网段目标MAC是默认网关的MAC发送ARP请求网关IP的MAC。封装数据帧源MAC为本机目标MAC为下一跳目标主机或网关的MACIP头中源IP和目标IP保持不变。数据从应用层开始依次封装段头、包头、帧头链路层发送将帧发送到物理链路。中间路由器处理路由器收到帧检查目标MAC是否为自己接收接口的MAC是则接收否则丢弃。解封出IP包根据目标IP查找路由表决定出接口和下一跳IP。下一跳IP的MAC通过ARP获取若不在ARP缓存中。重新封装源MAC改为出接口的MAC目标MAC改为下一跳的MACIP头不变。最终到达目标主机目标主机收到帧检查目标MAC为自己解封IP包。检查目标IP为自己将数据交给上层协议如TCP/UDP。八、总结IP地址 A, B, C, D 类,并解析IP地址的组成IP地址的基本组成IP地址由32位二进制组成通常用点分十进制表示IPv4地址 网络位 主机位192.168.1.111000000.10101000.00000001.00000001每个分割的段 8位二进制0-255IP地址分类类别首位bit网络位长度主机位长度地址范围默认子网掩码用途A类08位24位0.0.0.0 - 127.255.255.255255.0.0.0超大型网络B类1016位16位128.0.0.0 - 191.255.255.255255.255.0.0中型网络C类11024位8位192.0.0.0 - 223.255.255.255255.255.255.0小型网络D类1110无无224.0.0.0 - 239.255.255.255无组播地址E类1111无无240.0.0.0 - 255.255.255.255无科研保留九、201.222.200.111/18计算主机数子网掩码说明计算方法可用主机数 2^14 - 2 16384 - 2 16382子网掩码/18 表示前18位为1后14位为0。点分十进制为255.255.192.0十、当A(10.0.1.1/16)与B(10.0.2.2/24)通信A如何判断是否在同一个网段A和B能否通信每台主机都用自己的子网掩码来判断目标是否在同一网段目标网络号 目标IP 自己的子网掩码自己网络号 自己IP 自己的子网掩码如果 目标网络号 自己网络号 → 同一网段直接通信如果 不相等 → 不同网段走网关B的IP10.0.2.2 00001010.00000000.00000010.00000010 (10.0.2.2)A的掩码255.255.0.0 11111111. 11111111. 00000000.00000000 (255.255.0.0)B的网络号00001010.00000000.00000000.00000000 → 10.0.0.0B的网络号从A视角00001010.00000000.00000000.00000000 10.0.0.0A 认为 B 的网络号也是 10.0.0.0/16。A的网络号也是通过根据自己的IP和掩码用逻辑与演算出来的。由此A认为B和自己是在一个网段。A和B不能直接双向通信B不认为A和自己同网段。B 用自己掩码 /24 计算10.0.1.1 255.255.255.0 10.0.1.0/24B 自己的网络号是 10.0.2.0/24B 不会直接发 ARP 给 A而是将包发给默认网关.配置了网关就可以通信如果没有配置就没有返程。十一、 如何将10.0.0.0/8划分32个子网求每个子网的掩码主机数。将 10.0.0.0/8 划分为 32 个子网需要从主机位借用 5 位因为 2^5 32。借 n 位子网数量 2^n借后的子网的主机数和掩码掩码85/13即 255.248.0.0主机数量2^(32-13)-2524286

相关文章:

马哥sre云计算运维第4次作业

一、解析/etc/sysconfig/network-scripts/ifcfg-eth0配置格式 TYPEEthernet # 网络类型,这里为以太网类型 PROXY_METHODnone # 代理方法:没有 BROWSER_ONLYno # 只浏览器使用: 否 如果只是配置网卡的话,没啥用可以去掉 BOOTPROT…...

拉格朗日乘数法与SVM优化原理详解

1. 拉格朗日乘数法的数学基础1.1 约束优化问题的标准形式拉格朗日乘数法是解决约束优化问题的经典方法。在机器学习领域,我们经常遇到需要在特定约束条件下寻找函数极值的问题。这类问题的标准数学表述为:最小化目标函数:f(x) 约束条件&#…...

Arducam OCam AI相机与边缘计算实践解析

1. Arducam OCam AI相机:实时视频流上下文增强的硬件解析 作为一款专为边缘AI设计的智能相机,Arducam OCam在硬件层面实现了多项创新突破。其核心搭载的3 TOPS算力AI加速器(相当于每秒3万亿次运算)使其能够在设备端直接处理2K分辨…...

ChatGPT机器翻译优化指南:温度、提示词与避坑实践

1. 项目概述与核心价值最近在机器翻译(Machine Translation, MT)领域,一个绕不开的话题就是如何用好以ChatGPT为代表的大语言模型。我自己在尝试将GPT-3.5/4集成到翻译工作流中时,遇到了不少困惑:为什么有时候翻译质量…...

零基础入门深度学习训练:基于预装环境镜像,从数据集准备到模型验证全记录

零基础入门深度学习训练:基于预装环境镜像,从数据集准备到模型验证全记录 1. 深度学习训练环境概述 深度学习项目训练环境镜像是一个开箱即用的解决方案,预装了完整的深度学习开发环境。这个镜像基于PyTorch框架,集成了训练、推…...

WorkflowAI:开源LLM协作平台,让AI应用开发从周级缩短到分钟级

1. 项目概述与核心理念如果你正在为如何将大语言模型(LLM)的能力快速、可靠地集成到你的产品中而头疼,那么WorkflowAI这个项目,绝对值得你花时间深入了解。它不是一个简单的API封装器,而是一个旨在彻底改变产品团队与工…...

LangChain.js构建MCP智能体:快速接入微软Copilot平台实战指南

1. 项目概述:当LangChain.js遇见微软Copilot平台 如果你最近在捣鼓AI应用开发,特别是想把自己的工具或数据接入到像Microsoft 365 Copilot这样的企业级AI助手里去,那你很可能已经听说过“MCP”(Microsoft Copilot Platform&#x…...

AYN Odin掌机性能解析与选购指南

1. AYN Odin掌机概述:性能与定位解析AYN Odin是一款定位中高端的6英寸Android掌机,搭载高通骁龙845或联发科天玑900处理器,采用1080P IPS触摸屏,支持通过扩展坞连接大屏显示。相比市面上常见的Amlogic S905D3方案掌机(…...

XUnity自动翻译器终极指南:5分钟让任何Unity游戏变中文版

XUnity自动翻译器终极指南:5分钟让任何Unity游戏变中文版 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 还在为外语游戏而烦恼吗?XUnity自动翻译器是你的终极解决方案&#xff01…...

NLP文本预处理技术与Keras实践指南

1. 文本数据预处理的核心挑战在自然语言处理(NLP)领域工作时,我经常遇到这样的场景:拿到一批原始文本数据时,它们可能包含社交媒体评论、新闻文章或产品描述等各种形式。这些数据通常存在大小写混乱、特殊符号、停用词…...

深度学习训练历史可视化:从基础到高级技巧

1. 项目概述:为什么需要可视化训练历史? 在深度学习项目实践中,模型训练过程就像飞行员驾驶飞机时需要仪表盘一样重要。当我们用Keras训练神经网络时,model.fit()方法返回的History对象包含了loss和metrics的完整演变记录&#xf…...

时间序列预测:Box-Jenkins方法与ARIMA模型实战指南

1. 时间序列预测与Box-Jenkins方法概述我第一次接触Box-Jenkins方法是在分析销售数据时遇到的难题。当时手头有3年的日销数据,需要预测未来半年的趋势。传统的移动平均法完全失效,而机器学习模型又显得"杀鸡用牛刀"。这时一位资深数据科学家推…...

Clink 在 VS 2022 Developer Command Prompt 中的配置与路径精简调校

Clink 在 VS 2022 Developer Command Prompt 中的配置与路径精简调校 引言 Clink 是什么,能做什么? https://github.com/chrisant996/clink Clink 并不是 CMD 的替代品,而是它的增强层。它在保持批处理兼容性的同时,把类 Unix Sh…...

Canvas Quest与3D建模工作流结合:生成贴图与概念设计

Canvas Quest与3D建模工作流结合:生成贴图与概念设计 1. 引言:当AI绘画遇上3D建模 最近在3D建模圈里有个新趋势:越来越多的艺术家开始用AI生成的作品作为创作素材。想象一下,你花几分钟生成一张精美的人像,然后直接把…...

开源光标主题合集:从原理到实战,打造个性化桌面交互体验

1. 项目概述:打造你的专属桌面光标库如果你和我一样,是个对桌面美学有点“偏执”的玩家,那么系统自带的那几套万年不变的光标主题,恐怕早就看腻了。无论是Windows那套经典的Aero,还是Linux发行版里预装的Adwaita&#…...

深度学习图像描述生成技术解析与实践

1. 图像描述生成:从人类直觉到机器挑战给一张照片配上文字描述,对人类来说几乎是本能反应。我们看到一只猫趴在键盘上,立刻能描述为"一只橘猫正趴在笔记本电脑键盘上睡觉"。但要让机器完成同样任务,却需要跨越计算机视觉…...

从“听懂”到“干活”:带你了解驾驭工程、提示词工程与上下文工程的核心逻辑

引言在AI技术飞速普及的今天,越来越多的人开始尝试用大模型解决实际问题——可能是让AI写一段代码、整理一份文档,也可能是搭建一个能自主完成复杂任务的智能体。但很多人都会遇到同一个困惑:明明我给AI发了指令,它却总答非所问&a…...

Rust的#[non_exhaustive]:防止模式匹配穷尽的可扩展枚举

Rust的#[non_exhaustive]:防止模式匹配穷尽的可扩展枚举 Rust作为一门注重安全性与性能的系统级语言,其枚举(enum)类型在模式匹配中扮演着重要角色。当枚举需要跨库扩展时,如何保证下游代码的兼容性成为挑战。为此&am…...

世界及中国地震相关数据(2012-2024年)

01、数据介绍全球范围内,地震活动持续活跃,多起重大地震事件引发了广泛关注。全球共发生了数千次地震,其中有震级较高、破坏力较强的地震。这些地震不仅分布在板块交界地带,也出现在一些地质构造复杂的地区,显示出地震…...

ARM嵌入式C/C++库架构与优化实践

1. ARM C/C库架构解析ARM架构下的C/C标准库实现与通用PC环境存在显著差异,其设计充分考虑了嵌入式系统的特殊需求。库函数分为两个主要部分:与硬件无关的纯算法实现(如字符串处理、数学运算),以及与硬件/操作系统相关的…...

基于 SpringBoot+Vue 的 Web 网上摄影工作室开发与实现(PF 管理系统)——MyBatis + MySQL 全栈实战

随着短视频、电商内容与个性化影像消费不断增长,传统线下摄影工作室面临“获客成本高、排期混乱、订单跟踪低效、作品交付体验差”等问题。将摄影业务迁移到 Web 平台,构建统一的预约、订单、作品、客户与财务管理体系,已成为中小型摄影机构数…...

从解决问题的角度从零实现二插树

引言:二叉树是自我学习c以来学习的第一个数据结构,其复杂程度与顺序表,链表等数据结构不是一个量级,学习顺序表时,我感觉如鱼得水,甚至产生"编程也没什么大不了的"的想法,即使我忘记,…...

第二十一篇技术笔记:郭大侠学DoIP——4S店郎中的“秘密武器”

写在开篇:丢失的武侠梦,在这里起航和延续,用科技向老爷子的经典致敬。话说郭靖在江湖上混了几年,立了不少功,家底也越来越厚实。黄蓉早就不想坐那台快十年的老马车了——颠得慌不说,还没有空调。更气人的是…...

Python数据分析实战:Pandas处理缺失值的5个高级技巧(附完整代码)

Python数据分析实战:Pandas处理缺失值的5个高级技巧真实业务数据从来不会干净。今天把我在项目中踩过的坑,一次性整理给你。做数据分析的都知道,数据清洗占整个分析工作量的60-80%。而缺失值处理,又是数据清洗中最常见的问题。很多…...

4.20-4.26周报

牛客周赛 Round 140:A B C D E...

MCP 2026量子适配实录:从经典HPC集群到QPU协同架构的90天平滑过渡路径

更多请点击: https://intelliparadigm.com 第一章:MCP 2026量子适配实录:从经典HPC集群到QPU协同架构的90天平滑过渡路径 在国家超算中心某前沿实验室,MCP 2026量子适配项目以“零停机、双栈并行、渐进式卸载”为原则&#xff0c…...

【VS Code MCP性能调优黄金21条】:基于137个真实企业插件压测报告,第9条90%开发者至今未启用

更多请点击: https://intelliparadigm.com 第一章:VS Code MCP插件生态搭建手册 性能调优指南 MCP(Model Control Protocol)插件正成为 VS Code 中连接本地开发环境与大模型服务的关键桥梁。高效搭建其生态并保障响应性能&#x…...

想给照片换背景底色?2026 年这几款工具加一个微信小程序的搭配建议

如果你是日常需要处理证件照、产品白底图或社交分享图的人,想搞清楚换背景底色到底怎么操作才不翻车,这篇文章给你三种路径建议:零门槛手机搞定的、追求画质用桌面软件的、以及介于两者之间不需要安装的工具。下面会先拆解一款叫抠图喵的微信…...

模型加载慢、吞吐暴跌、OOM频发,MCP AI推理配置错误诊断与秒级修复方案

更多请点击: https://intelliparadigm.com 第一章:MCP AI推理配置的典型故障全景图 在大规模模型协同平台(MCP)中,AI推理配置的稳定性直接决定服务可用性与响应质量。常见故障并非孤立发生,而是呈现链式耦…...

抖音下载终极解决方案:douyin-downloader完全指南,新手也能轻松上手

抖音下载终极解决方案:douyin-downloader完全指南,新手也能轻松上手 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, an…...