web-dev-qa-db-fra.com

Recherche d'ordinateur sur le réseau via la ligne de commande

J'ai une poignée de Mac sur mon réseau domestique et Shell n'a accès qu'à l'un d'entre eux de l'extérieur. Comment savoir quelle est l'adresse IP des autres machines?

30
Jon Haddad

Essayez arp -a pour voir le tableau arp actuel de votre ordinateur. Il ne montrera que les adresses IP avec lesquelles votre ordinateur a interagi. Sortie comme ceci (obscurci un peu pour cacher les adresses MAC sur mon réseau):

$ 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]

Si vous ne possédez pas d’information supplémentaire sur un ordinateur donné, vous pouvez obtenir un peu plus d’informations en identifiant les fabricants des cartes réseau par le biais de Recherche d'adresse MAC .

36
Doug Harris

En supposant que toutes les autres machines se trouvent dans le même domaine de diffusion que celui auquel vous avez accès, il suffit souvent d’envoyer une requête ping à l’adresse de diffusion. Il ne trouvera pas les machines qui sont endormies, ni celles configurées pour ne pas répondre aux pings, ni celles qui répondront aux pings mais pas pour les diffuser.

% 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

La première et la dernière réponse sera presque toujours votre machine locale. Les réponses (DUP!) proviennent d’autres machines (bien que cet exemple montre également une machine qui répond avec l’adresse de diffusion elle-même, ce qui n’est pas très utile).

Vous pouvez également essayer l'adresse de diffusion tout-un:

% 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

Cet exemple montre moins cruel. Tous les (DUP!)s sont d'autres machines et la machine locale est facilement identifiée comme 127.0.0.1.

10
Chris Johnsen

Vos Mac ont tous des noms d’hôte, vous n’avez donc pas besoin de connaître les adresses IP. Au lieu de cela, vous utiliserez simplement le nom d'hôte.

Les noms d'hôte sont basés sur le nom que vous avez donné à l'ordinateur. Donc, si l'ordinateur s'appelle "Jon's Mac", le nom d'hôte que vous utiliserez sera quelque chose comme "jons-mac.local".

$ ssh jons-mac.local

Si vous ne connaissez pas déjà les noms d'hôte de vos ordinateurs, vous pouvez rechercher les noms d'hôte d'un ordinateur dans les préférences de partage de cet ordinateur ou connaître les noms d'hôte d'autres ordinateurs du réseau à l'aide de la commande dns-sd. Cette commande utilise Bonjour pour vous permettre de parcourir les services réseau. vous ne trouverez que des ordinateurs qui annoncent en fait un service réseau (qui, en gros, sont les seuls qui vous intéressent).

Si vous souhaitez vous connecter à un ordinateur fournissant ssh, vous pouvez trouver les ordinateurs disponibles en utilisant:

dns-sd -B _ssh._tcp .

En général, vous pouvez rechercher des hôtes fournissant des services particuliers en utilisant les noms de service: http://www.dns-sd.org/ServiceTypes.html

Le protocole Bonjour offre également la possibilité de rechercher tous les services , et pas seulement des services particuliers. Vous pouvez le faire en recherchant le service spécial _services._dns-sd._udp

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

La question concerne la recherche d'autres ordinateurs sur le réseau à partir de la ligne de commande, mais vous pouvez également parcourir les services annoncés dns-sd dans l'interface graphique. Par exemple, Terminal.app> Nouvelle connexion à distance ... ouvre une fenêtre qui affiche les services ssh, sftp, ftp et telnet annoncés.

8
bames53

Vous pouvez essayer d’utiliser dns-sd afin d’exécuter des requêtes Bonjour sur le réseau local.

7

C'est peut-être un peu excessif, mais vous pouvez utiliser nmap

6
Wagnarock

Une ligne de commande rapide CLI pour naviguer dans/24 sous-réseaux envoie une requête ping à chaque adresse IP. Rapide et un peu sale, mais ça marche.

for (( x=1; x <= 254; x++ )); do ping -c 3 192.168.0.$x; done

Explication: Pour modifier la plage, remplacez x = 1 par x = 130, ou indiquez ce que vous souhaitez commencer par 254 jusqu'à la fin, disons 135.

for (( x=130; x <= 135; x++ ));

ping -c 3 est envoyer trois pings. Pour changer le nombre de pings, changez le 3 en quelque chose d'autre, et pour changer la plage d'adresses, changez le 192.168.0 en quelque chose d'autre.

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

Si vous connaissez le nom des autres ordinateurs du réseau local, le moyen le plus simple consiste à leur envoyer une requête 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

Cela peut dépendre de votre routeur local ou de votre serveur DHCP. Si le nom d'hôte nu ne fonctionne pas, essayez d'ajouter . Local (c'est-à-dire, ping hostname.local ).

De toute évidence, cela ne fonctionne pas bien pour les grands réseaux locaux ou les personnes ayant une mauvaise mémoire.

2
quack quixote

Pour les fenêtres:

1) Écrire: pour/L% I dans (1,1,254) DO ping -w 30 -n 1 168.29.0.% I Ceci fera un ping toutes les adresses de votre réseau local

2) Puis écrivez: arp -a Ceci vous donnera toutes les adresses qui ont répondu

1
Chavdar

Si vous utilisez des ordinateurs Mac (en supposant 10.5 ou plus), activez simplement VNC pour l'accès au bureau et utilisez Flame.app.

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

C'est un petit utilitaire vraiment sympa qui vous donne exactement ce dont vous avez besoin, très rapidement. La seule chose à faire est que vous devez aller plus loin que SSH.

1
tylerm