Answers:
尝试arp -a
查看计算机的当前arp表。它只会显示您的计算机与之交互的IP地址。这样的输出(有点模糊以隐藏我的网络上的MAC地址):
$ arp -a
? (10.1.168.1) at xx:xx:9e:82:ab:f6 on en1 ifscope [ethernet]
? (10.1.168.16) at xx:xx:29:d3:17:8 on en1 ifscope [ethernet]
? (10.1.168.115) at xx:xx:2:4f:76:14 on en1 ifscope [ethernet]
? (10.1.168.131) at xx:xx:6b:d0:36:a5 on en1 ifscope [ethernet]
? (10.1.168.134) at (incomplete) on en1 ifscope [ethernet]
? (10.1.168.137) at xx:xx:65:46:cd:b8 on en1 ifscope [ethernet]
? (10.1.168.255) at ff:ff:ff:ff:ff:ff on en1 ifscope [ethernet]
? (192.168.4.255) at ff:ff:ff:ff:ff:ff on vmnet8 ifscope [ethernet]
? (192.168.110.255) at (incomplete) on vmnet1 ifscope [ethernet]
如果没有进一步的信息,该计算机是,你可以得到一点点通过识别网卡的制造商的更多信息MAC地址查找。
arp -a
将仅显示您的计算机与之交互的IP地址”。?我是否应该先对广播(192.168.110.255)进行ping操作,并从每个设备获取响应,然后再使用arp来获取完整列表,因为我刚刚与所有设备进行了交互/ ping操作?
假设所有其他计算机与您可以访问的计算机位于同一广播域中,则对广播地址执行ping操作通常就足够了。它不会找到处于睡眠状态的计算机,也不会找到配置为不响应ping的计算机,也不会找到将响应ping但不广播ping的计算机。
% ifconfig -a | grep broadcast
inet 192.168.1.241 netmask 0xffffff00 broadcast 192.168.1.255
% ping -i 5 -c 2 192.168.1.255
PING 192.168.1.255 (192.168.1.255): 56 data bytes
64 bytes from 192.168.1.241: icmp_seq=0 ttl=64 time=0.393 ms
64 bytes from 192.168.1.254: icmp_seq=0 ttl=255 time=2.511 ms (DUP!)
64 bytes from 192.168.1.65: icmp_seq=0 ttl=64 time=5.810 ms (DUP!)
64 bytes from 192.168.1.255: icmp_seq=0 ttl=64 time=7.886 ms (DUP!)
64 bytes from 192.168.1.241: icmp_seq=1 ttl=64 time=0.312 ms
--- 192.168.1.255 ping statistics ---
2 packets transmitted, 2 packets received, +3 duplicates, 0% packet loss
round-trip min/avg/max/stddev = 0.312/3.382/7.886/3.010 ms
第一个和最后一个响应几乎总是您的本地计算机。该(DUP!)
反应是从其他机器(尽管这个例子也显示一些机器的广播地址本身,这还不是特别有用的响应)。
您也可以尝试所有人广播的地址:
% ping -i 5 -c 2 255.255.255.255
PING 255.255.255.255 (255.255.255.255): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.392 ms
64 bytes from 192.168.1.254: icmp_seq=0 ttl=255 time=3.053 ms (DUP!)
64 bytes from 192.168.1.65: icmp_seq=0 ttl=64 time=8.685 ms (DUP!)
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.319 ms
--- 255.255.255.255 ping statistics ---
2 packets transmitted, 2 packets received, +2 duplicates, 0% packet loss
round-trip min/avg/max/stddev = 0.319/3.112/8.685/3.401 ms
此示例显示较少的混乱。所有(DUP!)
都是其他机器,本地机器很容易识别为127.0.0.1。
Mac均具有主机名,因此您无需知道IP地址。相反,您将只使用主机名。
主机名基于您为计算机指定的任何名称。因此,如果计算机名为“ Jon's Mac”,那么您将使用的主机名就是“ jons-mac.local”。
$ ssh jons-mac.local
如果您尚不知道计算机的主机名,则可以在该计算机上的共享首选项中查找计算机的主机名,也可以使用dns-sd命令查找网络上其他计算机的主机名。该命令使用Bonjour来浏览网络服务。您只会发现实际上在宣传某种网络服务的计算机(基本上,它们只是您所关心的)。
如果要连接到提供ssh的计算机,可以使用以下命令找到可用的计算机:
dns-sd -B _ssh._tcp .
通常,您可以使用以下服务名称搜索提供特定服务的主机:http : //www.dns-sd.org/ServiceTypes.html
Bonjour协议还提供了浏览所有服务的能力,而不仅仅是特定的服务。您可以通过浏览特殊服务来做到这一点_services._dns-sd._udp
dns-sd -B _services._dns-sd._udp .
问题是要从命令行查找网络上的其他计算机,但是您也可以在GUI中浏览dns-sd通告的服务。例如,Terminal.app>新建远程连接...将打开一个窗口,其中显示了广告的ssh,sftp,ftp和telnet服务。
dns-sd -B _ssh._tcp .
运行多快?
您可以尝试使用dns-sd
以便在LAN上执行Bonjour查询。
dns-sd -B _ssh._tcp .
一种快速的CLI衬板可逐步通过/ 24子网ping每个IP地址。快速且有点脏,但是可以。
for (( x=1; x <= 254; x++ )); do ping -c 3 192.168.0.$x; done
说明:要更改范围,请将x = 1更改为x = 130,或将要开始的任何值更改为254,最后更改为135。
for (( x=130; x <= 135; x++ ));
ping -c 3发送三个ping。要更改ping的数量,请将3更改为其他内容,并更改地址范围,将192.168.0更改为其他内容。
do ping -c 30 10.10.0.$x;
fping -ag 172.16.0.0/16
如果您知道局域网中其他计算机的名称,最简单的方法是对它们执行ping操作:
$ ping foobar
Pinging foobar.lan [192.168.0.25] with 32 bytes of data:
Reply from 192.168.0.25: bytes=32 time<1ms TTL=64
Reply from 192.168.0.25: bytes=32 time<1ms TTL=64
这可能取决于您的本地路由器或DHCP服务器。如果裸主机名不起作用,请尝试附加.local(即ping hostname.local)。
显然,这不适用于大型LAN或记忆力差的人。
如果您使用的是Mac(假设为10.5或更高版本),只需启用VNC进行桌面访问并使用Flame.app。
这是一个非常不错的小实用程序,可以非常快速地为您提供所需的内容。唯一的事情是您必须走得比SSH更远。
对于Windows:
1)写入:对于(L,1,254)中的/ L%I执行ping -w 30 -n 1 168.29.0。%I 这将ping您本地网络中的所有地址
2)然后输入:arp -a 这将为您提供所有已回答的地址