【问题标题】:Show active ip-addresses in linux script with % or UP/DOWN使用 % 或 UP/DOWN 在 linux 脚本中显示活动的 IP 地址
【发布时间】:2025-11-20 16:15:02
【问题描述】:

我有一个 IP 地址:192.168.0.205 我可以在脚本中 ping 它:

for i in 192.168.0.205 ....
do
  ping -c 1 $i
done

但现在我想要脚本显示: 192.168.0.205 向上或向下

还有没有办法以 % 显示它,例如:75% UP?

【问题讨论】:

  • 为什么不增加-c 100的ping次数,然后免费获得丢包百分比。
  • 您想知道网络中活跃IP地址的百分比或ping单个IP的丢包率吗?
  • 我想知道活动的 IP 地址,例如 3 ping 好,1 失败,所以我想要 75% UP
  • 但最重要的是他说……上或下。

标签: linux bash shell ubuntu


【解决方案1】:

你可能想要的是这个:

x=0;
a=1
b=5
for((i=$a;i<=$b;i++))
do
    y=`ping -n 1 192.168.1.$i | grep unreachable | wc -l`
    x=$(($x + $y))
done;
echo "$x $b $a" | awk '{printf "%.2f %% DOWN\n",($1/($2-$3+1))*100}';

x:包含DOWN IP的数量

a:第一个 IP 地址的最后一个八位字节

b:最后一个 IP 地址的最后一个八位字节

y:如果 IP 为 UP,则为 0,否则为 1

希望对你有帮助!

PS:将 -n 更改为 -c 或任何在您的 shell 中起作用的选项!

【讨论】:

  • 我按照你写的那样做,但我从 1 192 开始出现语法错误... 'til -l"
  • 你试过把 -n 改成 -c 吗?
  • 是的,我将 -n 更改为 -c 但我猜问题是从 greb 开始的。丢包可以改unreachable吗?
  • "unreachable" 只是我们无法 ping IP 时出现的一个词。您当然可以根据自己的要求进行更改。
  • 它不起作用。总是出错。你知道我如何在我的 IP 地址之后显示或显示吗?