Linux 网络中系统的 IP 地址

Linux 网络中系统的 IP 地址

我正在寻找一个 Linux 命令,可用于查找同一网络中连接的不同系统的 IP 地址。所有系统都运行 Fedora 14。

提前致谢..

答案1

我认为没有完全通用的方法可以做到这一点。不过,您可以尝试以下几种方法。

一个是运行arp -a。这将打印地址解析协议缓存,其中包含您的计算机最近与之通信的每台本地计算机的 IP 地址和 MAC 地址。这是您需要的信息,但仅适用于网络上的一部分主机。

另一种方法是使用多播。您的机器是否正在运行 Avahi?如果是,您可以在它们上进行 mDNS 查询;尝试运行avahi-browse -at

我原本以为这样做的副作用是您的机器会与发布 mDNS 资源的机器进行通信,从而将其详细信息带入 ARP 缓存,然后您可以像上面一样列出这些缓存。然而,事实似乎并非如此。

但是,您可以要求解析所通告的服务,从而获取机器的 IP 地址。然后您可以从avahi-browse的输出中提取这些地址。如下所示:

avahi-browse -atr | egrep -o '[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*' | sort -u

这只会找到通过 mDNS 宣传服务的机器,但很有可能这就是您的所有机器;Workstation出于某种原因,现代 Linux 系统都会宣传服务。

答案2

nmap 绝对是您要找的命令。您可以执行以下操作:

nmap -sn 192.168.10.0/24

扫描 192.168.10.0/24 网络上的所有内容。要对特定机器进行更深入的扫描,您可以尝试:

nmap -A -T4 192.168.10.12

例如。注意:您需要“sudo”或 root 权限才能启用某些扫描功能,但不需要启用基本 ping 功能。

答案3

我不知道有这样的命令,但你可以使用一个软件。Angry IP 扫描仪是我在 Windows 中使用的,我也发现了一个 Linux 版本。

答案4

结合 nmap 和 arp 可获得最佳效果,特别是涉及 iptables 时:

(这是针对安卓系统的,因此需要做少许改动)


echo "running LIST scan..." 
su -c "/data/data/jackpal.androidterm/nmap/nmap -sL 10.0.7.240-254 >/dev/null 2>&1" 
echo "running PING scan..." 
su -c "/data/data/jackpal.androidterm/nmap/nmap -sP 10.0.7.240-254 >/dev/null 2>&1"
echo "------------------------------"
arp|grep ether|awk '{print $2,$4}'

相关内容