Jon*_*dad 30 networking command-line macos
我的家庭网络上有几台 Mac,并且只能从外部访问其中一台。我怎样才能弄清楚其他机器的IP地址是什么?
Dou*_*ris 40
尝试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]
Run Code Online (Sandbox Code Playgroud)
如果没有进一步的信息,该计算机是,你可以得到一点点通过识别网卡的制造商的更多信息MAC地址查找。
Chr*_*sen 10
假设所有其他机器与您有权访问的机器在同一广播域中,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
Run Code Online (Sandbox Code Playgroud)
第一个和最后一个响应几乎总是你的本地机器。该(DUP!)反应是从其他机器(尽管这个例子也显示一些机器的广播地址本身,这还不是特别有用的响应)。
你也可以试试全1的广播地址:
% 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
Run Code Online (Sandbox Code Playgroud)
这个例子显示了更少的麻烦。所有的(DUP!)s 都是其他机器,本地机器很容易识别为 127.0.0.1。
您的 Mac 都有主机名,因此您不需要知道 IP 地址。相反,您将只使用主机名。
主机名基于您为计算机指定的任何名称。因此,如果计算机名为“Jon's Mac”,则您将使用的主机名类似于“jons-mac.local”。
$ ssh jons-mac.local
Run Code Online (Sandbox Code Playgroud)
如果您还不知道您计算机的主机名,那么您可以在该计算机的共享首选项中查找该计算机的主机名,或者您可以使用 dns-sd 命令查找网络上其他计算机的主机名。此命令使用 Bonjour 来让您浏览网络服务;您只会找到实际宣传某些网络服务的计算机(总的来说,这是您唯一关心的服务)。
如果您想连接到某些提供 ssh 的计算机,您可以使用以下命令找到可用的计算机:
dns-sd -B _ssh._tcp .
Run Code Online (Sandbox Code Playgroud)
通常,您可以使用服务名称搜索提供特定服务的主机:http : //www.dns-sd.org/ServiceTypes.html
Bonjour 协议还提供浏览所有服务的能力,而不仅仅是特定的服务。您可以通过浏览特殊服务来做到这一点_services._dns-sd._udp
dns-sd -B _services._dns-sd._udp .
Run Code Online (Sandbox Code Playgroud)
问题是询问如何从命令行查找网络上的其他计算机,但您也可以在 GUI 中浏览 dns-sd 广告服务。例如,Terminal.app > New Remote Connection... 会弹出一个窗口,显示广告的 ssh、sftp、ftp 和 telnet 服务。
| 归档时间: |
|
| 查看次数: |
104072 次 |
| 最近记录: |