一、编写脚本for1.sh,使用for循环创建20账户,账户名前缀由用户从键盘输入,账户初始密码由用户输入,例如:test1、test2、test3、......、test10

实现思路
  1. 通过read命令获取用户输入的账户前缀和初始密码;
  2. 加入非空校验:若前缀或密码为空,退出脚本并提示;
  3. 使用for循环遍历 1-20 的数字,拼接前缀生成账户名(如前缀+1);
  4. id -u 账户名判断账户是否存在,不存在则创建并设置密码。
代码实现
[root@node1 ~]# vim for1.sh
#!/bin/bash# 功能:批量创建带前缀的20个账户,支持密码设置与重复校验# 获取用户输入:账户前缀和初始密码
read -p "请输入账户名前缀:" name
read -p "请输入账户的密码:" passwd# 非空校验:若前缀或密码为空,提示并退出
if [ -z $name  ] || [ -z $passwd  ]
thenecho "请输入有效前缀名和密码!"exit
else# for循环遍历1-20,生成账户名并创建for ((i=1;i<=20;i++))douser=$name$i        # 拼接账户名(如前缀为rch时,i=1则为rch1)# 判断账户是否已存在(id -u 账户名 &> /dev/null 无输出则存在)if id -u $user &> /dev/nullthenecho "账户已存在"continue  # 跳过当前循环,进入下一次elseuseradd $user# 为新账户设置密码(--stdin表示从标准输入获取密码)echo "$passwd" | passwd --stdin root &> /dev/nullecho "$user创建成功"fidone
fi
测试验证
# 测试1:输入为空(前缀或密码为空)
[root@node1 ~]# bash for1.sh 
请输入账户名前缀:
请输入账户的密码:
请输入有效前缀名和密码!
[root@node1 ~]# bash for1.sh 
请输入账户名前缀:rch
请输入账户的密码:
请输入有效前缀名和密码!
[root@node1 ~]# bash for1.sh 
请输入账户名前缀:
请输入账户的密码:123
请输入有效前缀名和密码!# 测试2:正常输入前缀和密码
[root@node1 ~]# bash for1.sh 
请输入账户名前缀:rch
请输入账户的密码:123
rch1创建成功
rch2创建成功
rch3创建成功
rch4创建成功
rch5创建成功
rch6创建成功
rch7创建成功
rch8创建成功
rch9创建成功
rch10创建成功
rch11创建成功
rch12创建成功
rch13创建成功
rch14创建成功
rch15创建成功
rch16创建成功
rch17创建成功
rch18创建成功
rch19创建成功
rch20创建成功

二、编写脚本for2.sh,使用for循环,通过ping命令测试网段的主机连通性,IP前3段由用户输入,如:输入192.168.48 ,则ping 192.168.48.125-192.168.48.135,将可以ping通的主机IP地址写入到 /tmp/host_up.txt文件中,不能ping通的主机IP地址写入到:/tmp/host_down.txt文件中

实现思路
  1. 通过read命令获取 IP 前 3 段(如192.168.48),加入非空校验;
  2. 使用for循环遍历目标主机的最后一段 IP(如 120-130),拼接完整 IP;
  3. ping命令检测连通性(发 2 个包,超时 3 秒),根据结果写入对应文件;
  4. 为结果添加颜色标记(绿色表示通,红色表示不通)
代码实现
[root@node1 ~]# vim for2.sh 
#!/bin/bash# 功能:批量检测网段内主机连通性,区分保存通/不通的IP# 获取IP前3段(如192.168.120)
read -p "请输入网络主机号:" ip# 非空校验:若输入为空,提示并退出
if [ -z $ip  ]
thenecho "请输入有效主机号"exit
else# for循环遍历最后一段IP(120-130),可根据需求修改范围for ((i=120;i<=130;i++))doIP=$ip.$i   # 拼接完整IP(如192.168.120.120)# ping检测:-c 2发2个包,-w 3超时3秒,结果重定向到/dev/nullif ping -c 2 -w 3  $IP &> /dev/nullthen# 连通:绿色标记并写入host_up.txtecho -e "\e[32m $IP\e[0m" >> /tmp/host_up.txtelse# 不通:红色标记并写入host_down.txtecho -e "\e[1;31m $IP\e[0m" >> /tmp/host_down.txtfidone
fi
测试验证
[root@node1 ~]# bash for2.sh 
请输入网络主机号:
请输入有效主机号
[root@node1 ~]# bash for2.sh 
请输入网络主机号:192.168.120# 查看结果文件(另开终端)
[root@node1 ~]# tail -f /tmp/host_down.txt 192.168.120.120192.168.120.121192.168.120.122192.168.120.123192.168.120.124192.168.120.125192.168.120.126192.168.120.127192.168.120.129
[root@node1 ~]# tail -f /tmp/host_up.txt 192.168.120.128192.168.120.130
颜色提示如下:

三、使用for循环实现批量主机root密码的修改

实现思路
  1. 准备 IP 列表文件(ip.txt),存放需修改密码的主机 IP;
  2. 通过ssh-keygen生成密钥对,用ssh-copy-id实现免密登录(避免输入密码);
  3. for循环读取 IP 列表,通过ssh远程执行密码修改命令。
前置准备(免密登录配置)
# 1. 生成ssh密钥对(一路回车默认配置)
[root@master ~]# ssh-keygen -t rsa# 2. 将公钥复制到目标主机(实现免密登录)
[root@master ~]# ssh-copy-id root@192.168.120.130  # 替换为目标IP
# 首次执行需输入目标主机root密码# 3. 验证免密登录(无需输密码即登录成功)
[root@master ~]# ssh root@192.168.120.130
[root@node1 ~]#  # 成功登录# 4. 准备IP列表文件
[root@master ~]# vim ip.txt  # 写入需管理的主机IP
192.168.120.130
# 可添加多个IP,每行一个
代码实现
[root@master ~]# vim for3.sh
#!/bin/bash# 功能:批量修改多台主机的root密码(需提前配置免密登录)read -p "请输入密码:"  passwd# for循环遍历ip.txt中的所有主机IP
for i in $(cat ip.txt)
do# 通过ssh远程登录主机,执行密码修改命令# echo $passwd | passwd --stdin root:将密码通过标准输入传给passwdssh $i "echo $passwd  | passwd --stdin root"
done
测试验证
[root@master ~]# bash for3.sh 
请输入密码:1234567890Authorized users only. All activities may be monitored and reported.
更改用户 root 的密码 。
passwd:所有的身份验证令牌已经成功更新。# 验证:登录目标主机,用新密码成功登录
[root@master ~]# ssh root@192.168.120.130
root@192.168.120.130's password:  # 输入新密码1234567890
[root@node1 ~]#  # 登录成功,密码修改生效

总结

批量创建账户脚本(for1.sh)通过读取用户输入的前缀和密码,结合循环遍历与账户存在性检测,快速生成规范命名的账户,非空校验确保了输入的有效性,避免了因参数缺失导致的创建失败。

网段连通性检测脚本(for2.sh)则利用 ping 命令的特性,对用户指定网段内的连续 IP 进行批量检测,将结果按连通状态分类保存并添加颜色标记,让网络状态一目了然,简化了网段排查工作。

多主机密码修改脚本(for3.sh)的关键在于前置的免密登录配置,通过 ssh 密钥对实现无交互登录后,循环遍历 IP 列表执行密码修改命令,轻松解决了多台服务器密码统一管理的难题。

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

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

相关文章

PBR技术

一 、PBR的概述1.定义策略路由&#xff1a; PBR 是一种覆盖路由器默认路由决策机制的技术。它允许管理员根据策略&#xff08;而不仅仅是目标地址&#xff09;来设置数据包的下一跳 IP 地址、出站接口、IP 优先级/DSCP 值等。路由策略&#xff1a;是指在路由器或三层设备上&…

STM32-ESP8266Wi-Fi模块使用USART实现通信/创建AP和STA模式配置教程(寄存器版)

本章思维导图&#xff1a;ESP8266WIFI模块简介ESP8266 是一款由乐鑫科技推出的低成本、高性能 Wi-Fi 模块&#xff0c;广泛应用于物联网和嵌入式开发领域。WIFI的频段5G和2.4G2.4G Wi-Fi与5G Wi-Fi最本质的区别即工作频段&#xff08;无线电波的频率&#xff09;不一样&#xf…

算法26. 删除有序数组中的重复项

给你一个 非严格递增排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元素的数量为 k &#xff0c;你…

ROS2中传输样条曲线

在ROS2中传输样条曲线需要解决两个核心问题&#xff1a;**如何结构化表示曲线数据**和**如何高效传输**。以下是一套完整方案&#xff0c;结合自定义消息设计、序列化优化和QoS配置实现可靠传输&#xff1a;---### &#x1f4d0; 一、定义样条曲线的自定义消息 样条曲线通常由控…

Win11怎样安装DirectX 9

通过微软官方下载安装&#xff1a;确认系统兼容性并准备&#xff1a;确保显卡驱动为最新版本&#xff0c;因为 DirectX 与显卡驱动程序紧密相关。同时&#xff0c;可暂时关闭防病毒软件和防火墙&#xff0c;防止其干扰安装过程。下载安装程序&#xff1a;访问微软官方网站下载 …

RAGFLOW~Enable RAPTOR

Enable RAPTOR 一种递归抽象方法&#xff0c;用于长上下文知识检索和摘要&#xff0c;在广泛语义理解和细微细节之间取得平衡。 RAPTOR&#xff08;递归抽象处理用于树状组织检索&#xff09;是一种在2024年论文中引入的增强文档预处理技术。它旨在解决多跳问答问题&#xff0c…

【机器人+相机通讯】宇树科技相机通信

https://github.com/unitreerobotics/xr_teleoperate/blob/main/README_zh-CN.md 相机驱动与服务端 https://github.com/unitreerobotics/xr_teleoperate/blob/main/teleop/image_server/image_server.py 其中相机如果是realsense, 安装好驱动后&#xff0c;可以使用命令查看…

机械学习中的一些优化算法(以逻辑回归实现案例来讲解)

一、混淆矩阵混淆矩阵是机器学习中评估分类模型性能的重要工具&#xff0c;尤其适用于二分类或多分类任务。它通过展示模型预测结果与实际标签的匹配情况&#xff0c;帮助理解模型的错误类型&#xff08;如假阳性、假阴性等&#xff09;。以下通过二分类场景为例&#xff0c;结…

龙蜥受邀参加2025开放计算技术大会,解码基础模型驱动下的系统创新与生态共建

开放计算技术大会由全球最大的开放计算社区 OCP 发起&#xff0c;是开放计算领域生态覆盖最广且最具影响力的亚洲年度技术盛会。本届大会由 OCP 与 OCTC&#xff08;中国电子工业标准化技术协会开放计算标准工作委员会&#xff09;两大开放组织联合主办&#xff0c;将于 8 月 7…

第三阶段—8天Python从入门到精通【itheima】-140节(pysqark实战——基础准备)

目录 140节——pysqark实战——基础准备 1.学习目标 2.pysqark库的安装 3.pyspark的路径安装问题 一、为什么不需要指定路径&#xff1f; 二、如何找到 pyspark 的具体安装路径&#xff1f; 三、验证一下&#xff1a;直接定位 pyspark 的安装路径 四、总结&#xff1a;记…

数据库中使用SQL作分组处理01(简单分组)

1.简单分组GroupBy什么就Select什么SELECT Name,Score From StudentScore GROUP BY Name,Score2.聚合函数(MAX SUM AVG COUNT)&#xff08;1&#xff09;计算1.表的全部字段都可以用聚合函数&#xff0c;但是筛选聚合函数的结果要用Having关键字2.聚合函数默认排除Null值IDName…

Linux基本服务——web服务解析

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 目录 Web服务解析 虚拟Web主机 Web目录访问控制 Web服务解析 用途&#xff1a;基于 B/S 架构提供网页的服务端程序 应用层协议&#xff1a;HTTP&#xff08;TCP 80…

深入理解缓存淘汰策略:LRU vs LFU 完全解析

深入理解缓存淘汰策略&#xff1a;LRU vs LFU 完全解析 文章目录深入理解缓存淘汰策略&#xff1a;LRU vs LFU 完全解析前言一、基础概念解析1.1 LRU&#xff08;Least Recently Used&#xff09;- 最近最少使用1.2 LFU&#xff08;Least Frequently Used&#xff09;- 最少使用…

【C语言】字符函数与字符串函数详解

文章目录一、字符分类函数二、字符转换函数三、strlen函数&#xff1a;计算字符串长度功能说明使用示例模拟实现四、strcpy函数&#xff1a;字符串拷贝功能说明模拟实现五、strcat函数&#xff1a;字符串追加功能说明模拟实现六、strcmp函数&#xff1a;字符串比较比较规则模拟…

uvicorn 启动重复加载 多次加载

目录 uvicorn 启动重复加载 多次加载 解决方法1&#xff1a; 解决方法2&#xff1a; uvicorn 启动重复加载 多次加载 fastapi_aa 是当前类 解决方法1&#xff1a; import uvicornfrom fastapi import FastAPIapp FastAPI()if __name__ "__main__":if sys.gett…

Bard AI本地部署教程:在自己的服务器上运行谷歌AI

Bard AI本地部署教程:在自己的服务器上运行谷歌AI 关键词:Bard AI、本地部署、服务器、谷歌AI、运行教程 摘要:本文旨在为大家详细介绍如何在自己的服务器上实现Bard AI的本地部署。我们会从背景知识讲起,逐步深入到核心概念、算法原理、操作步骤,还会提供项目实战案例和实…

应急响应处置案例(上)

本文目录 目录 本文目录 Web安全事件 概述 案例1 - webshell 背景 排查情况 天眼 服务器 案例2 - Struts2 排查情况 天眼 服务器 案例3 - Redis未授权 背景 排查情况 天眼 服务器 案例4 - EW内网穿透 背景 排查情况 天眼 服务器 案例5 - 一句话木马 背…

面试官问我:“为什么不能完全用对象替代指针?”我笑了:看看Google和Linux内核代码就知道了!

本篇摘要 本篇将以最通俗易懂的语言&#xff0c;形象的讲述为什么很多情境下&#xff0c;我们优先考虑的使用指针而不是对象本身&#xff0c;本篇将给出你答案&#xff01; 一.从一个生活例子说起&#xff0c;形象秒懂 想象一下&#xff0c;你去图书馆借书&#xff0c;下面你…

CAMx大气污染模拟全流程:Linux编译/多重嵌套配置/SMOKE清单预处理/SA-DDM-PA工具应用与科研绘图结果可视化分析

CAMx模型是一个基于大气化学&#xff0c;针对臭氧、颗粒物和雾霾天气过程的大气污染物计算模型。【目标】&#xff1a;1、掌握CAMx模式的区域空气质量模拟案例配置技术方法2、掌握SMOKE模型的CAMx模式大气排放清单输入准备方法3、掌握CAMx模式污染来源解析工具&#xff08;SA&a…

嵌入式学习笔记-MCU阶段-DAY10ESP8266模块

1.ESP8266概述 官方网址&#xff1a;ESP8266 Wi-Fi MCU I 乐鑫科技 (espressif.com.cn) ESP8266模块---wifi模块 产品特点&#xff1a; 2.ESP8266中的wifi: ESP8266EX ⽀持 TCP/IP 协议&#xff0c;完全遵循 802.11 b/g/n WLAN MAC 协议&#xff0c;⽀持分布式控制功能 (DC…