Shell 脚本编程实训:从批量操作到网络探测,解锁自动化运维利器

张开发
2026/4/20 13:00:34 15 分钟阅读

分享文章

Shell 脚本编程实训:从批量操作到网络探测,解锁自动化运维利器
一、实训背景作为 Linux 运维入门的核心技能Shell 脚本是实现批量操作、自动化运维的 “瑞士军刀”。本次实训通过批量创建用户、主机存活探测、局域网 MAC 地址扫描、猜数游戏4 个经典场景从基础循环、变量到实战工具整合彻底吃透 Shell 脚本的核心用法下面就把本次实训的收获、脚本拆解和避坑心得分享二、核心脚本拆解与知识点总结一批量创建用户脚本for 循环 管道交互搞定批量运维1. 脚本代码uaddfor.sh2. 执行效果脚本会读取users.txt中的用户名列表批量创建用户并统一设置初始密码123456即使是已存在的用户也会直接更新密码完美适配批量初始化场景。3. 核心知识点#!/bin/bash脚本声明指定用 Bash 解释器执行是所有 Shell 脚本的 “标配开头”。变量赋值ULIST$(cat /root/users.txt)用命令替换读取文件内容将用户名列表存入变量。for 循环遍历$ULIST中的每一个用户名执行创建 改密操作是批量操作的核心。passwd --stdin非交互式修改密码通过管道|将密码传入避免手动交互适配脚本自动化。执行权限必须用chmod x uaddfor.sh赋予执行权限否则无法直接运行。4. 避坑心得若用户名列表包含空格需用while IFS read -r UNAME循环替代 for 循环避免拆分错误。生产环境中绝对不要用明文密码可结合openssl passwd生成加密密码或用chpasswd批量改密避免安全风险。二主机存活探测脚本ping 状态判断批量检测网络连通性1. 脚本代码chkhosts.sh2. 执行效果读取ipadds.txt中的 IP 列表批量 ping 检测主机状态清晰输出每台主机的存活情况快速排查网络故障。3. 核心知识点ping 参数详解-c 3发送 3 个 ICMP 包避免无限 ping-i 0.2包间隔 0.2 秒加快检测速度-W 3超时时间 3 秒适配不同网络环境。 /dev/null将 ping 的所有输出标准输出 错误输出重定向到 “黑洞”只保留状态判断让脚本输出更干净。$?状态变量获取上一条命令的退出状态0代表执行成功主机存活非 0 代表失败主机离线是 Shell 脚本条件判断的核心。if-else 分支根据 ping 的结果输出不同的存活状态实现自动化判断。4. 避坑心得部分主机关闭了 ICMP 响应ping 不通不代表主机离线可结合nc端口探测做补充检测。批量探测大量 IP 时可改用fping工具效率比原生 ping 高 10 倍以上适合大规模网络扫描。脚本中[ $? -eq 0 ]的括号前后必须有空格否则会语法报错这是 Shell 脚本最常见的新手坑三局域网 MAC 地址扫描脚本arping 循环全网段设备发现1. 脚本代码getarp.sh2. 执行效果自动获取本机网段遍历 1-254 的所有 IP通过 arping 探测局域网内所有设备的 MAC 地址结果保存到/etc/ethers实现全网段设备发现。3. 核心知识点IP 与网段提取ifconfig grep awk提取本机非 127.0.0.1 的 IP 地址cut -d . -f 1-3截取 IP 的前 3 段得到网段如192.168.150。while 循环通过i变量自增遍历 1-254 的所有主机位实现全网段扫描。 /etc/ethers执行前清空文件避免历史数据干扰是脚本的 “初始化操作”。arping工具二层网络探测工具比 ping 更适合局域网设备发现即使主机禁 ping 也能探测到。 /etc/ethers追加重定向将每次探测到的 MAC 地址追加到文件中最终生成完整的 IP-MAC 对应表。4. 避坑心得脚本必须用 root 权限执行否则 arping 会因权限不足无法发送 ARP 请求导致扫描结果为空。扫描前建议先确认本机网段避免因多网卡导致 IP 提取错误可手动指定NET192.168.150做适配。大规模网段扫描可优化超时时间-W 0.2加快扫描速度同时避免网络拥塞。四猜数游戏脚本随机数 循环交互玩转 Shell 脚本逻辑1. 脚本核心逻辑猜数游戏.sh2. 执行效果生成 1 个 0-999 的随机数用户输入猜测数字脚本提示 “太高 / 太低”直到猜对后输出猜测次数是 Shell 脚本交互逻辑的经典练手项目。3. 核心知识点$RANDOMShell 内置随机数变量生成 0-32767 的随机数通过%1000取模得到 0-999 的随机数。while true死循环持续接收用户输入直到猜对后用exit 0退出脚本是交互式脚本的常用写法。read命令读取用户输入-p参数指定提示语实现脚本与用户的交互。let COUNT变量自增统计猜测次数是 Shell 中整数运算的简洁写法。多分支 if 判断根据用户输入与随机数的大小关系输出不同提示逻辑清晰易懂。4. 避坑心得需添加输入校验判断用户输入是否为整数避免非数字输入导致脚本报错。可优化难度设置猜测次数上限或缩小数字范围适配不同场景。脚本中-eq/-lt/-gt仅支持整数比较若需小数比较需用bc工具做运算。三、结语Shell 脚本没有 “捷径”只有多写、多测、多踩坑才能真正掌握。本次实训通过 4 个经典场景从基础到实战彻底打通了 Shell 脚本的核心逻辑希望这篇一课一得能帮到同样在学习 Shell 脚本的小伙伴一起解锁自动化运维的更多技能本文所有脚本均在 CentOS 7 环境下测试通过可直接复制使用适配绝大多数 Linux 发行版。

更多文章