【发布时间】:2021-11-09 04:50:17
【问题描述】:
我正在尝试同时 ping 192.168.2-254 上的所有 IP 并获取每个 IP 的返回状态。这是我到目前为止所拥有的,但它不起作用,而只是返回 xargs 的状态。任何帮助表示赞赏!我不想用 nmap...
subnet="192.168.1"
num="2"
while [ "$num" -lt "254" ]; do
num=$((num+1))
printf "${subnet}.${num}\n"
done | xargs -n 1 -I ^ -P 50 ping -c2 -t3
【问题讨论】:
-
^是特殊的,而不是对 shell 有意义,无论它是否是有效的xargs语法/参数。它需要转义/引用。 -
好的,我使用了其他人的部分代码(不要判断我知道你也这样做)。所以我所知道的是 xargs 部分将同时执行 ping 最多同时运行 50 个进程,而 ^ 是命令的一部分。你能帮我改写命令,让我得到 ping 的状态(也许用 '$?' ?"
-
我不使用
xargs,所以我恐怕帮不上忙。 -
@KamilCuk,我在想 Bourne shell,而不是 Bash 我的坏,
^与 bash/sh 中的管道相同。