使用Ubuntu 10.10,我想知道是否有一个命令行命令可以列出连接到网络的设备的所有IP?
例如,我将使用它来列出连接到我的家庭网络的所有计算机。理想情况下,它需要是命令行,因为我将从C ++运行它。
有任何想法吗?
使用Ubuntu 10.10,我想知道是否有一个命令行命令可以列出连接到网络的设备的所有IP?
例如,我将使用它来列出连接到我的家庭网络的所有计算机。理想情况下,它需要是命令行,因为我将从C ++运行它。
有任何想法吗?
Answers:
签出arp-scan命令-您可能必须安装它,例如:
sudo apt-get install arp-scan
http://manpages.ubuntu.com/manpages/hardy/man1/arp-scan.1.html
并提供更多详细信息:
sudo arp-scan --interface=eth0 --localnet
eth0是您的设备。您可以通过以下方式找到设备:
ifconfig
wlan0
代替eth0
。
使用nmap。示例:nmap -sn 10.10.10.0/24
arp缓存只会告诉您您最近尝试联系的人。
在Windows中,这将是“ arp -a
”,我相信与Linux中的等效将是“ arp -e
”。
这些信息可以在arp的手册页中找到:
arp with no mode specifier will print the current content of the table.
-e : Use default Linux style output format (with fixed columns).
arp -a
以备用(BSD)样式显示(所有)主机。Simpy运行arp
与运行相同,arp -e
因为这是默认设置。
如果您的网络是192.168.0.0/24
,请使用以下代码制作可执行文件;否则,请执行以下操作。将更192.168.0
改为您的实际网络。
#!/bin/bash
for ip in 192.168.0.{1..254}; do
ping -c 1 -W 1 $ip | grep "64 bytes" &
done
ping -b -c 1 192.168.0.255
结果“发送了1个数据包,接收了0个数据包,丢失了100%的数据包,时间为0ms”
有关连接设备的更紧凑列表:
nmap -sL 192.168.0.* | grep \(1
说明。
nmap -sL 192.168.0.*
将列出子网中的所有IP并标记名称为:
Nmap scan report for 192.168.0.0
Nmap scan report for Dlink-Router.Dlink (192.168.0.1)
Nmap scan report for 192.168.0.2
...
Nmap scan report for android-473e80f183648322.Dlink (192.168.0.53)
...
Nmap scan report for 192.168.0.255
由于所有有趣的记录都以括号(
和digit开头1
,因此我们用过滤| grep \(1
(需要使用反斜杠来避免括号)
怪癖
要注意,如果两个设备具有相同的名称,则nmap
只会显示最后连接到路由器的一个
详细说明安德斯·拉尔森(Anders Larrson)的答案-
#!/bin/bash
function scan ()
{
for ip in $1.{1..254}; do
ping -c 1 -W 1 $ip &
done | sed -nE 's:^.* from ([0-9.]+).*time=(.*s)$:\1 (\2):p'
}
if [ $1 ]; then
for baseip; do
scan $baseip
done
else
scan 192.168.1
fi