【发布时间】:2019-09-13 01:58:05
【问题描述】:
编写脚本并想 ping 网络上的设备,告诉我它是否可达,然后从 ping 中获取 ttl 数据并告诉我操作系统。
我尝试过使用 awk 命令,但我也是脚本新手,可能没有正确使用它。
for host in $(seq 1 255);
do
ping -c 1 $sn.$host | grep "Unreachable" &>/dev/null
if [ $? -eq 0 ]; then
printf "%s\n" "$sn.$host is Offline"
fi
ping -c 1 $sn.$host | grep "ttl" &>/dev/null
if [ $? -eq 0 ]; then
printf "%s\n" "$sn.$host is Online"
fi
done
我需要 ttl 值并将其存储到一个变量中,然后告诉我基于 Linux 的操作系统的 ttl 为 64,windows 的 ttl 为 128,ios 为 255
【问题讨论】:
-
这可能不是一种可靠的检测方式,尤其是因为 TTL 可以根据网络路径而改变(可以随时改变)。例如,如果我从我的 Ubuntu 虚拟机 ping 主机 Windows,我会得到
127,而我通过从同一个虚拟机 ping 同事的盒子得到128。