Shell 腳本實戰:基于 for 循環的批量操作三例(賬戶創建、網絡檢測與密碼管理)

一、編寫腳本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…