【发布时间】:2020-07-09 13:39:34
【问题描述】:
-
问题:所以最近我想尝试编写一个简单的脚本来从 ping 脚本中检测操作系统(基于 TTL(生存时间))
-
我尝试过的事情:我尝试过一些类似的事情
#!/bin/bash
sn=${1:-$1}
for host in $(seq 1 255); do
ttlstr=$(ping -c1 -w1 $sn.$host | grep -o 'ttl=[0-9][0-9]*') || {
printf "%s is Offline\n" "$sn.$host"
continue;
}
ttl="${ttlstr#*=}"
printf "%s is Online, ttl=%d\n" "$sn.$host" "$ttl"
if [ $ttl -eq 64 ]
then
echo "Operating is Linux"
elif [ $ttl -eq 128 ]
then
echo "Operating is Windows"
else
echo "Operating is IOS"
fi
done
- 所以你可以看到它可以用给定的IP地址ping每个IP。但是如果用户想输入:
192.168.1.0/24我该如何解决?
最后,感谢您的回答:D
【问题讨论】:
-
除非您想编写自己的解析器,否则为什么不使用像 ipcalc 这样的 CLI 工具?
-
我有一个关于 bash 脚本的作业:D Tks 为您解答:D
-
你想用
${1:-$1}实现什么?${1:-x}表示$1的值,如果它已定义且不为空,否则为x。但是您的x是$1,这使得表达式的意思是“如果设置了则使用$1,否则使用$1”。 -
@axiac 感谢您指出我的错误。我对 bash 很陌生,所以我仍然会犯错误:D。仍在努力提高我的 Bash 技能
标签: bash