linux - 如何查看IP是否被使用?

标签 linux bash networking

我在服务器中有以下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)。如果您认为forwhile循环操作太慢,您可以尝试使用命令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/

相关文章:

c++ - 当应用程序崩溃时,linux 缓冲区缓存的行为如何?

c - Ubuntu C 程序可加载模块和 undefined symbol

linux - 如何克隆一个有进度的大文件?

python - 通过python调用IDA Pro

linux - 编写Linux机器的脚本创建

bash - 使用 bash 进行动态 zip 文件校验和检查

java - 如何在 Java 中确定 Internet 网络接口(interface)

python - 为没有写入权限的用户在网络驱动器上安装 Python

html - VS Code - 权限被拒绝写入文件

c++ - 使用 select() 从 stdin 读取 - 以非阻塞方式