shell脚本编写练习2

news2025/1/9 17:59:16

1.准备阶段

在根目录下创建一个目录来存储shell脚本

mkdir /s3

2.题目

1. 使用case实现成绩优良差的判断

#!/bin/bash

# 假设成绩存储在变量GRADE中
read -p "请输入成绩(0-100):" GRADE

# 使用case语句进行判断
case $GRADE in
    [8-9][0-9]|100)
        echo "成绩是:优秀"
        ;;
    [6-7][0-9])
        echo "成绩是:良好"
        ;;
    [0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9])
        echo "成绩是:bu及格"
        ;;
    *)
        echo "无效的成绩输入"
        ;;
esac


2. for创建20个用户,用户前缀由用户输入,用户初始密码由用户输入,例如:test01,test10

#!/bin/bash
#########################
#File name:b.sh
#Version:v1.0
#Email:admin@test.com
#Created time:2024-11-28 20:56:58
#Description:
#########################
read -p "请输入用户前缀:" userf
read -p "请输入初始密码:" passwd
users=$(seq -f "$userf%02g" 1 20)
for user in $users
do
        id $user &>/dev/null
        if [ $? -eq 0 ];then
                echo "用户已存在"
        else
                useradd $user
                echo $passwd | passwd --stdin $user
        fi
done


3. for ping测试指网段的主机,网段由用户输入,例如用户输入192.168.2 ,则ping 192.168.2.10 --- 192.168.2.20  另外日志存储在以下文件中:
   UP: /tmp/host_up.txt
   Down: /tmp/host_down.txt

#!/bin/bash
#########################
#File name:c.sh
#Version:v1.0
#Email:admin@test.com
#Created time:2024-11-28 20:57:28
#Description:
#########################
read -p "请输入你需要测试的网段:" segment
i=132
until [ $i -gt 140 ]
do
        if ping -c 2 "$segment.$i" &>/dev/null;then
                echo "主机$segment.$i可达..." >> /tmp/host_up.txt
        else
                echo "主机$segment.$i不可达..." >> /tmp/host_down.txt
        fi
        let i++
done


4. 使用for实现批量主机root密码的修改
   成功或失败都必须记录
   提示:主机IP存放在一个文件中
   SSH:实现公钥认证,执行远程中主机命令
   实现公钥认证

首先需要在当前目录下创建文件hosts_ip.txt

touch hosts_ip.txt

在该文件中添加以下格式的ip

然后再创建日志文件password_change_log.txt

touch password_change_log.txt

最后在脚本文件中添加以下内容:

#!/bin/bash
#########################
#File name:d.sh
#Version:v1.0
#Email:admin@test.com
#Created time:2024-11-29 20:35:41
#Description:
#########################

#读取主机ip列表
hosts_file="hosts_ip.txt"
password="123"
log_file="password_change_log.txt"

#检查是否存在主机列表文件
if [ ! -f "$hosts_file" ];then
	echo "主机列表文件不存在!"
	exit 1
fi

#生成ssh密钥对(如果尚未生成)
if [ ! -f ~/.ssh/id_rsa ];then
	echo "未找到ssh密钥对,正在生成..."
	ssh-keygen -t rsa -b 2048 -f ~/.ssh/id_rsa -N ""
	echo "ssh密钥对生成成功"
fi

#为每个主机复制公钥以启用ssh公钥认证
for host in $(cat "$hosts_file");do
	echo "正在为主机$host配置公钥认证..."
	ssh-copy-id -i ~/.ssh/id_rsa.pub "root@$host" >> "$log_file" 2>&1
	if [ $? -eq 0 ];then
		echo "公钥认证成功:$host" >> "$log_file"
	else
		echo "公钥认证失败:$host" >> "$log_file"
		continue
	fi
done

#批量修改root密码
for host in $(cat "$hosts_file")
do
	echo "正在修改$host上的root密码..."
	
	#使用ssh执行远程命令修改root密码
	ssh "root@$host" "echo 'root:$password' | chpasswd" >> "$log_file" 2>&1
	
	if [ $? -eq 0 ];then
		echo "密码修改成功:$host" >> "$log_file"
	else
		echo "密码修改失败:$host" >> "$log_file"
	fi
done

echo "操作完成,结果请查看日志文件$log_file"

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

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

相关文章

清远榉之乡托养机构探讨:自闭症的本质辨析

当人们谈及自闭症时,常常会产生一个疑问:自闭症是精神类疾病吗?今天,清远榉之乡托养机构就来为大家解开这个疑惑。 榉之乡大龄自闭症托养机构在江苏、广东、江西等地都有分校,一直致力于为大龄自闭症患者提供专业的支持…

基于PoE交换机的智慧停车场监控组网应用

伴随城市发展快速,汽车保有量也不断增长,导致停车管理问题也愈发凸显。针对包括路侧停车位、地面停车场、地下停车场等场景的停车管理需求,通常会部署监控设备进行车位监测、现场安全监测等,助力构建智能化停车管理。因此如何为分…

.net XSSFWorkbook 读取/写入 指定单元格的内容

方法如下&#xff1a; using NPOI.SS.Formula.Functions;using NPOI.SS.UserModel;using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime;using OfficeOpenXml.FormulaParsing.Excel.Functions.Numeric;/// <summary>/// 读取Excel指定单元格内容/// </summa…

10个Word自动化办公脚本

在日常工作和学习中&#xff0c;我们常常需要处理Word文档&#xff08;.docx&#xff09;。 Python提供了强大的库&#xff0c;如python-docx&#xff0c;使我们能够轻松地进行文档创建、编辑和格式化等操作。本文将分享10个使用Python编写的Word自动化脚本&#xff0c;帮助新…

红日靶场-5

环境搭建 这个靶场相对于前几个靶场来说较为简单&#xff0c;只有两台靶机&#xff0c;其中一台主机是win7&#xff0c;作为我们的DMZ区域的入口机&#xff0c;另外一台是windows2008&#xff0c;作为我们的域控主机&#xff0c;所以我们只需要给我们的win7配置两张网卡&#…

[Java]微服务之分布式事务

介绍 下单业务&#xff0c;前端请求首先进入订单服务&#xff0c;创建订单并写入数据库。然后订单服务调用购物车服务和库存服务: 购物车服务负责清理购物车信息库存服务负责扣减商品库存 问题分析: 下单过程中, 订单服务创建订单, 插入自己的数据库, 执行成功购物车服务, 清…

存储结构及关系(一)

学习目标 描述数据库的逻辑结构列出段类型及其用途列出控制块空间使用的关键字获取存储结构信息 段的类型 段是数据库中占用空间的对象。它们使用数据库数据文件中的空间。介绍不同类型的段。 表 表是在数据库中存储数据的最常用方法。表段用于存储既没有集群也没有分区的表…

cesium 3dtile ClippingPlanes 多边形挖洞ClippingPlaneCollection

原理就是3dtiles里面的属性clippingPlanes 采用ClippingPlaneCollection&#xff0c;构成多边形来挖洞。 其次就是xyz法向量挖洞 clippingPlanes: new this.ffCesium.Cesium.ClippingPlaneCollection({unionClippingRegions: true, // true 表示多个切割面能合并为一个有效的…

AMD的AI芯片Instinct系列介绍

AMD最强AI芯片发布&#xff01; 在旧金山举行的Advancing AI 2024大会上&#xff0c;AMD推出Instinct MI325X AI加速器&#xff08;以下简称MI325X&#xff09;&#xff0c;直接与英伟达的Blackwell芯片正面交锋。 现场展示的数据显示&#xff0c;与英伟达H200的集成平台H200 …

【大数据学习 | Spark调优篇】Spark之内存调优

1. 内存的花费 1&#xff09;每个Java对象&#xff0c;都有一个对象头&#xff0c;会占用16个字节&#xff0c;主要是包括了一些对象的元信息&#xff0c;比如指向它的类的指针。如果一个对象本身很小&#xff0c;比如就包括了一个int类型的field&#xff0c;那么它的对象头实…

基于深度学习的卷积神经网络十二生肖图像识别系统(PyQt5界面+数据集+训练代码)

本研究提出了一种基于深度学习的十二生肖图像识别系统&#xff0c;旨在利用卷积神经网络&#xff08;CNN&#xff09;进行图像分类&#xff0c;特别是十二生肖图像的自动识别。系统的核心采用了两种经典的深度学习模型&#xff1a;ResNet50和VGG16&#xff0c;进行图像的特征提…

kali linux 装 virtual box 增强工具 Guest Addition

kali linux 装 virtual box 增强工具 Guest Addition install Virtual Box Guest Addition in kali linux 搞了一下午&#xff0c;最终发现是白折腾。 kali linux 自带 virtual box 的增强工具。 kali linux 2021.3 之后的版本都是自带virtual box 增强工具 解决方法 直接…

vue3请求接口报错:Cannot read properties of undefined (reading ‘data‘)

文章目录 报错内容解决方案 报错内容 Cannot read properties of undefined (reading ‘data’) 解决方案 响应未按预期返回 确保服务器返回的数据结构符合预期。例如&#xff0c;服务器可能返回了一个错误响应&#xff0c;而不是预期的 JSON 数据。 检查响应 在 response 拦…

RocketMQ rocketmq-tools管理主题

RocketMQ rocketmq-tools管理主题 环境和软件版本增删改查 环境和软件版本 Win10、IDEA、Jdk1.8、rocketmq 5.1.3、rocketmq-tools 5.1.3 引入依赖 <dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-tools</artifactId&g…

《datawhale2411组队学习 模型压缩技术7:NNI剪枝》

文章目录 一、NNI简介二、 NNI剪枝快速入门2.1 加载并训练模型2.2 模型剪枝2.3 模型加速&#xff08;剪枝永久化&#xff09;2.4 微调压缩模型2.5 Slim Pruner测试 三、 使用NNI3.0进行Bert压缩&#xff08;剪枝、蒸馏)3.1 数据预处理3.2 训练模型3.3 设置模型蒸馏函数3.4 修剪…

C#学写了一个程序记录日志的方法(Log类)

1.错误和警告信息单独生产文本进行记录&#xff1b; 2.日志到一定内存阈值可以打包压缩&#xff0c;单独存储起来&#xff0c;修改字段MaxLogFileSizeForCompress的值即可&#xff1b; 3.Log类调用举例&#xff1a;Log.Txt(JB.信息,“日志记录内容”,"通道1"); usi…

Java设计模式——职责链模式:解锁高效灵活的请求处理之道

嘿&#xff0c;各位 Java 编程大神和爱好者们&#xff01;今天咱们要一同深入探索一种超厉害的设计模式——职责链模式。它就像一条神奇的“处理链”&#xff0c;能让请求在多个对象之间有条不紊地传递&#xff0c;直到找到最合适的“处理者”。准备好跟我一起揭开它神秘的面纱…

安装SQL Server 2022提示需要Microsoft .NET Framework 4.7.2 或更高版本

安装SQL Server 2022提示需要Microsoft .NET Framework 4.7.2 或更高版本。 原因是&#xff1a;当前操作系统版本为Windows Server 2016 Standard版本&#xff0c;其自带的Microsoft .NET Framework 版本为4.6太低&#xff0c;不满足要求。 根据报错的提示&#xff0c;点击链接…

高德地图 Readme GT 定制版 10.25.0.3249 | 极致简洁

这款定制版高德地图去除了广告&#xff0c;运行速度更快。虽然没有车道级导航、打车功能和红绿灯倒计时等功能&#xff0c;但支持正常登录和收藏功能。检测更新始终为最新版本。 大小&#xff1a;82.5M 下载地址&#xff1a; 百度网盘&#xff1a;https://pan.baidu.com/s/1Y…

Admin.NET框架使用宝塔面板部署步骤

文章目录 Admin.NET框架使用宝塔面板部署步骤&#x1f381;框架介绍部署步骤1.Centos7 部署宝塔面板2.部署Admin.NET后端3.部署前端Web4.访问前端页面 Admin.NET框架使用宝塔面板部署步骤 &#x1f381;框架介绍 Admin.NET 是基于 .NET6 (Furion/SqlSugar) 实现的通用权限开发…