我在服务器中有以下IP
192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.4
我需要知道这些IP是否正在被使用?
我可以找到使用 lsof 但它太慢了
for ip in ${server_ip_list[@]}; do
lsof -i @$ip &>/dev/null && echo "$ip is used" || echo "$ip is unused"
done
下面的命令更快,但我需要指定端口和协议(protocol)
true &>/dev/null </dev/tcp/192.168.1.1/80 && echo used || echo unused
我正在寻找一个更快的命令,使用它可以确定是否使用 IP,无论协议(protocol)或端口如何。
如果有人可以帮助提供解决方案或我可以阅读相关内容的链接,我将不胜感激。
最佳答案
也许您可以使用命令ping
来检查是否正在使用特定的IP(不要在防火墙中禁用ICMP
)。如果您认为for
或while
循环操作太慢,您可以尝试使用命令parallel
同时执行命令。
代码示例如
ip_check(){
ip="$1"
ping -c 1 -W 1 "$ip" &> /dev/null
if [[ $? -eq 0 ]]; then
echo 'used'
else
echo 'unused'
fi
}
export -f ip_check
cat ip_file.txt | parallel -k -j 0 ip_check 2> /dev/null
关于linux - 如何查看IP是否被使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46968091/