首页 > 解决方案 > 一次将指定的IP范围ping到txt(不是一个接一个)-可能吗?

问题描述

我需要 ping 指定的 IP 范围,例如 - 从 192.168.1。41到 192.168.1。50 . 并将其导出到 file.txt

我是新手,我正在尝试学习“编程”我有这样的事情:

file=something.txt
for IP in 192.168.1.{41..50}
do
echo "pinging ${IP}"
echo "PINGING ${IP} ">>${file}
ping -c 10 $IP >>${file}
done

但它一个接一个地ping。可以同时ping吗?

标签: linuxbashping

解决方案


使您的代码异步:

for IP in 192.168.1.{41..50}
do
echo "pinging ${IP}" &
echo "PINGING ${IP} ">>${file} &
ping -c 10 $IP >>${file} &
done

如果您不满意,您也可以使用 xargs 并行化您的代码,但我认为这取决于线程数,因此您将受到限制:

for IP in 192.168.1.{41..50}
do
echo ${IP}
done | xargs -P 10 -n1  -I "ip_address" sh -c "ping -c 10 ip_address > ip_address.txt" 

推荐阅读