web-dev-qa-db-ja.com

コマンドラインを介してネットワーク上の他のコンピューターを見つける

私はホームネットワーク上に数台のMacを持っていますが、Shellは外部からそのうちの1台だけにアクセスします。他のマシンのIPアドレスを確認するにはどうすればよいですか?

30
Jon Haddad

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アドレス検索

39
Doug Harris

他のすべてのマシンがアクセス可能なマシンと同じブロードキャストドメインにあると想定すると、ブロードキャストアドレスに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!)応答は他のマシンからのものです(ただし、この例では、ブロードキャストアドレス自体で応答するいくつかのマシンも示されていますが、これはあまり役に立ちません)。

また、すべて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

この例では、残骸が少ないことが示されています。全ての (DUP!)sは他のマシンであり、ローカルマシンは127.0.0.1として簡単に識別されます。

10
Chris Johnsen

すべての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プロトコルは、特定のサービスだけでなく、allサービスを参照する機能も提供します。これを行うには、特別サービス_services._dns-sd._udpを参照します

dns-sd -B _services._dns-sd._udp .

問題は、コマンドラインからネットワーク上の他のコンピューターを見つけることですが、GUIでdns-sdアドバタイズされたサービスを参照することもできます。たとえば、Terminal.app> New Remote Connection ...は、アドバタイズされたssh、sftp、ftp、およびtelnetサービスを示すウィンドウを表示します。

8
bames53

dns-sd LANでBonjourクエリを実行するため。

多分それは少しやり過ぎですが、あなたは nmap を使うことができます

6
Wagnarock

各IPアドレスに/ 24サブネットpingを実行するクイックCLIワンライナー。素早く汚れていますが、動作します。

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は3つのpingを送信します。 pingの数を変更するには、3を別のものに変更し、アドレス範囲を変更するには、192.168.0を別のものに変更します。

do ping -c 30 10.10.0.$x;
4
quinnr

LAN内の他のコンピューターの名前がわかっている場合、最も簡単な方法はそれらを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や記憶力の乏しい人々にはうまく機能しません。

2
quack quixote

Windowsの場合:

1)書き込み:(1,1,254)の/ L%Iの場合)DO ping -w 30 -n 1 168.29.0。%Iローカルネットワークのすべてのアドレスにpingを実行します

2)次に、次のように記述します。arp -aこれにより、回答したすべてのアドレスが表示されます

1
Chavdar

Macを使用している場合(10.5以降を想定)、デスクトップアクセス用にVNCを有効にし、Flame.appを使用します。

http://husk.org/apps/flame/

これは、必要なものを正確にすばやく提供する、非常に優れた小さなユーティリティです。唯一のことは、SSHよりも遠くまで行かなければならないということです。

1
tylerm