272 votes

Comment puis-je lister toutes les IPs du réseau connecté, via le Terminal de préférence ?

En utilisant la ligne de commande d'Ubuntu 10.10, comment puis-je lister toutes les IPs connectées à mon réseau domestique ?

Idéalement, il doit s'agir d'une commande CLI car je l'exécuterai à partir de C++.

282voto

Linker3000 Points 26898

Consultez le arp-scan vous devrez probablement l'installer, par exemple :

sudo apt-get install arp-scan

http://manpages.ubuntu.com/manpages/hardy/man1/arp-scan.1.html

Et pour donner plus de détails :

sudo arp-scan --interface=eth0 --localnet

Où eth0 est votre appareil. Vous pouvez trouver votre appareil avec :

ifconfig

0 votes

Parfait, merci. Il renvoie exactement le format dont j'ai besoin.

1 votes

Fonctionne parfaitement sur OSX aussi ! J'ai installé avec Brew, et l'interface était en0, plutôt que eth0, mais ça marche très bien.

6 votes

Si vous êtes connecté à votre réseau en utilisant le wifi utilisez wlan0 au lieu de eth0 .

134voto

Keith Points 7743

Utilisez nmap. exemple : nmap -sn 10.10.10.0/24 Le cache arp ne vous indiquera que ceux que vous avez essayé de contacter récemment.

4 votes

Est-ce que 10.10.10.0 est l'adresse IP qui m'a été donnée ? Que signifie 24 dans ce cas ? Merci.

6 votes

@kolonel C'est juste un exemple. Vous devez le remplacer par votre réseau. Le 24 est la "notation de la barre oblique" du masque de sous-réseau. Cela signifie qu'il faut utiliser 24 bits à partir de la gauche. C'est l'équivalent de 255.255.255.0.

2 votes

@Keith savez-vous comment trouver l'adresse de mon réseau à utiliser ? Ou est-ce simplement mon IP avec 0/24 à la fin ?

25voto

David Points 7275

Sous Windows, ce serait arp -a un équivalent de cela sous Linux serait arp -e .

De la man page pour arp :

arp with no mode specifier will print the current content of the table.
-e : Use default Linux style output format (with fixed columns).

1 votes

Cela a l'air de fonctionner (il faudra peut-être faire un essai car je suis sur un réseau public et cela semble seulement lister tous les serveurs sur le réseau.

0 votes

Si je suis sur un réseau domestique, est-ce que la liste se limitera aux appareils connectés à mon routeur ? Merci !

2 votes

Cette commande ne listera que les périphériques dans le cache arp actuel de l'hôte et ce ne seront que ceux que l'hôte a contacté récemment.

22voto

Anders Larsson Points 221

Si votre réseau est 192.168.0.0/24 créez un fichier exécutable avec le code suivant : modifiez le champ 192.168.0 à votre réseau actuel.

#!/bin/bash
for ip in 192.168.0.{1..254}; do
  ping -c 1 -W 1 $ip | grep "64 bytes" &
done

0 votes

Bonjour Anders... Le réseau de l'utilisateur pourrait ne pas être 192.168.0.0/24 ; j'ai fait une note. Le formatage du site n'aimait pas les # ! et a donc altéré le formatage de l'extrait de code : lorsque vous saisissez du code, utilisez les boutons de citation ou de texte préformaté, et vérifiez que votre réponse est correctement formatée avant de la soumettre, car les retours chariot, les tabulations et les espaces peuvent avoir été supprimés.

0 votes

De même, lorsque vous fournissez un script qui doit être mis dans un fichier et rendu exécutable, plutôt que simplement copié-collé, il est probablement préférable que vous le précisiez ; il se peut que certains ne voient pas clairement ce qui est nécessaire pour mettre en œuvre votre solution.

15 votes

Techniquement, cela ne renverra que les hôtes qui répondent au ping. Il peut y avoir des hôtes qui sont connectés, mais qui ne répondent pas aux requêtes d'écho ICMP. De plus, on peut diffuser un paquet à un réseau entier en spécifiant l'adresse de diffusion, qui est la dernière adresse du réseau IP : ping -c 1 -W 1 192.168.0.255 accomplirait la même chose que le boucle for.

16voto

Sheri Newton Points 21

Essayez d'installer nmap ( sudo apt-get install nmap ) et le type nmap 192.168.1.0/24 en remplaçant 192.168.1 avec les trois premières parties de votre adresse ip (à trouver en utilisant ip addr ).

Vous pouvez également obtenir une carte légèrement moins précise (selon mon expérience) d'un réseau en exécutant ping 192.168.1.255 (en substituant à nouveau 192.168.1 ), qui devrait émettre un ping à chaque machine du réseau, mais, d'après mon expérience, cela ne fonctionne pas toujours correctement.

0 votes

En fait, aucune des réponses ne fonctionnera toujours correctement. Le protocole IP n'a pas été conçu avec cette exigence à l'esprit, et il existe des choses comme les VLAN privés qui rendent impossible la recherche d'autres hôtes sur le même réseau local.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X