我正在寻找一个 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}'