我有一个名为 address.txt 的文本文件,其中包含 IP 地址列表,其中包含以下内容
172.26.26.1 wlan01
172.26.27.65 wlan02
172.26.28.180 wlan03
Run Code Online (Sandbox Code Playgroud)
我需要编写一个 bash 脚本来读取唯一的 IP 地址,对它们进行 ping 操作并将其输出到另一个文本文件,如下所示:
172.26.26.1 已上线
172.26.27.65 已关闭
172.26.28.180 已关闭
我对 bash 脚本相当陌生,所以我不知道从哪里开始。任何帮助将非常感激。
在 Linux 中,这可以工作:
awk '{print $1}' < address.txt | while read ip; do ping -c1 $ip >/dev/null 2>&1 && echo $ip IS UP || echo $ip IS DOWN; done
Run Code Online (Sandbox Code Playgroud)
我现在没有 cygwin 来测试,但它也应该在那里工作。
解释:
awk从输入文件中获取第一列并将其通过管道传输到循环中ping到$ip,并将标准输出和标准错误重定向到 ,/dev/null这样它就不会污染我们的输出ping后面的命令:&&echo $ip IS UPping后面的命令:||echo $ip IS DOWN更具可读性的扩展格式可以放入脚本中:
#!/bin/sh
awk '{print $1}' < address.txt | while read ip; do
if ping -c1 $ip >/dev/null 2>&1; then
echo $ip IS UP
else
echo $ip IS DOWN
fi
done
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15905 次 |
| 最近记录: |