测试环境 macOS 12
neil@192 ~ %sysctl-nhw.model 10Mac14,2 neil@192 ~ % sw_vers ProductName: macOS ProductVersion:12.7.4 BuildVersion: 21H1123 neil@192 ~ %用到的命令:
- ifconfig : 我们需要使用这个命令来查看自己的局域网网段,从而才能使用ping来尝试连接。
- ping : 我们使用ping来尝试连接,即测试是否宕机。
- shell中的for循环
步骤:
1.使用ifconfig查看自己的局域网网段
- 补充说明:grep -E 拓展的正则表达式
- 第十行:找到我所在的局域网网段为192.168.1.xxx
# 使用ifconfig查看自己的局域网网段neil@192 ~ %ifconfig|grep-E"(inet|netmask)"inet127.0.0.1 netmask 0xff000000 inet6 ::1 prefixlen128inet6 fe80::1%lo0 prefixlen64scopeid 0x1 inet6 fe80::3482:e3ff:feed:b18%anpi1 prefixlen64scopeid 0x4 inet6 fe80::3482:e3ff:feed:b17%anpi0 prefixlen64scopeid 0x5 inet6 fe80::1818:edca:8495:3b76%en0 prefixlen64secured scopeid 0xb# 下面这一行就是我们的局域网所在网段inet192.168.1.7 netmask 0xffffff00 broadcast192.168.1.255 inet6 240e:3ba:30b9:de60:1871:4e51:fb11:b7ac prefixlen64autoconf secured inet6 240e:3ba:30b9:de60:cd3e:16b3:6d8:f28 prefixlen64autoconf temporary inet6 fe80::78d5:4bff:fe0c:9a5d%awdl0 prefixlen64scopeid 0xc inet6 fe80::78d5:4bff:fe0c:9a5d%llw0 prefixlen64scopeid 0xd inet6 fe80::5aac:6efa:9d96:7e94%utun3 prefixlen64scopeid 0x12 inet6 fe80::d617:1ed0:a01f:8bd4%utun4 prefixlen64scopeid 0x13 inet6 fe80::ce81:b1c:bd2c:69e%utun5 prefixlen64scopeid 0x142.让我们来编写一个带有for循环的shell脚本来尝试ping所有本局域网内的地址:
#!/bin/bash# 从192.168.1.1 到 192.168.1.254foriin{1..254};do# 使用pingping-c2-i0.5192.168.1.$iif[$?-eq0];thenecho"192.168.1.$iis up"elseecho"192.168.1.$iis down"fidone别忘了赋予使用chmod +x ping.sh来赋予脚本执行权限。
3.执行脚本,得到测试结果。
一个小技巧改进输出结果
以上方法虽然已经足够实现功能,然而美中不足的地方在于,直接echo ping输出的内容又多又杂,可读性比较差,我们只关心IP地址和是否宕机的话,可以对pīng.sh如下改进:
#!/bin/bash# from 192.168.1.1 to 192.168.1.254foriin{1..254};do# 现在,我们将无用的信息重定向进/dev/null当中ping-c2-i0.5192.168.1.$i&>/dev/nullif[$?-eq0];thenecho"192.168.1.$iis up"elseecho"192.168.1.$iis down"fidone再次运行,我们得到了清爽的结果:
neil@192 00_shell % ./ping.sh192.168.1.1 is up192.168.1.2 is down192.168.1.3 is up192.168.1.4 is down192.168.1.5 is down192.168.1.6 is up192.168.1.7 is up192.168.1.8 is down192.168.1.9 is down192.168.1.10 is down192.168.1.11 is down补充知识
| IP地址 | 用途 | 说明 |
|---|---|---|
| 192.168.1.0 | 网络地址 | 标识整个网络,设备不能用 |
| 192.168.1.1 | 通常为网关 | 路由器/网关地址 |
| 192.168.1.2 - 192.168.1.254 | 可用主机地址 | 设备可以使用的IP |
| 192.168.1.255 | 广播地址 | 全网广播,设备不能用 |