Question Comment puis-je lister toutes les adresses IP du réseau connecté, via le terminal de préférence?


En utilisant Ubuntu 10.10, je me demandais s'il existait une commande de ligne de commande capable de répertorier toutes les adresses IP des périphériques connectés au réseau?

Je l'utiliserais par exemple pour répertorier tous les ordinateurs connectés à mon réseau domestique. Idéalement, il doit être en ligne de commande car je l'exécuterai depuis C ++.

Des idées?


195
2018-03-24 13:27


origine


askubuntu.com/questions/82480/... || serverfault.com/questions/72380/... - Ciro Santilli 新疆改造中心 六四事件 法轮功
Plus de doublons: 1.  Obtenir toutes les adresses IP des périphériques connectés au même routeur. 2.  Afficher la liste des ordinateurs sur un LAN sous Linux - Alexander Malakhov
3.  Meilleure méthode et outils pour l'analyse IP locale - Alexander Malakhov


Réponses:


Vérifiez arp-scan commande - 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

217
2018-03-24 13:37



Parfait, merci. Renvoie exactement le format dont j'ai besoin. - Christopher Gwilliams
Fonctionne parfaitement sur OSX aussi! Installé avec Brew, et l'interface était en0, plutôt que eth0, mais fonctionne très bien. - nthonygreen
Si vous êtes connecté à votre réseau en utilisant le wifi wlan0 au lieu de eth0. - Neil
Pouvez-vous obtenir ceci pour lister les noms d'hôte ainsi que les adresses IP? - user1527227
Il convient de noter que cela n'utilise pas le cache ARP: il effectue une analyse réelle. Contrairement à la plupart des analyses nmap, cela ne peut pas dépasser les limites de la couche 3, ce qui est généralement ce que vous voulez dans ce scénario. (En d'autres termes, il est limité à votre sous-réseau.) - Zenexer


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.


104
2018-03-24 13:38



est 10.10.10.0 mon adresse IP donnée? Qu'est-ce que 24 dans ce cas? Merci. - kolonel
@kolonel C'est juste un exemple. Vous devez le remplacer par votre réseau. Le 24 est la "notation slash" du masque de sous-réseau. Cela signifie utiliser 24 bits de la gauche. C'est équivalent à 255.255.255.0. - Keith
@Keith savez-vous comment trouver mon adresse réseau à utiliser? Ou est-ce juste mon adresse IP avec 0/24 à la fin? - TMH
@ kolonel:en.wikipedia.org/wiki/Classless_Inter-Domain_Routing - arkod


Dans les fenêtres ce serait "arp -a"Je crois qu'un équivalent de Linux serait"arp -e".

Cette information peut être trouvée à partir de la page de manuel arp:

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

19
2018-03-24 13:33



Cela semble fonctionner (il faudra peut-être avoir un jeu car je suis sur un réseau public, il semble donc que tous les serveurs du réseau apparaissent.) - Christopher Gwilliams
Si je suis sur un réseau domestique, va-t-il simplement lister les périphériques connectés à mon routeur? Merci! - Christopher Gwilliams
Cette commande ne listera que les périphériques dans le cache arp actuel des hôtes et ce ne seront que ceux que l'hôte a contactés récemment. - Linker3000
Les deux fonctionnent sous Linux, mais arp -a affiche (tous) les hôtes dans le style alternatif (BSD). Simpy en cours d'exécution arp fait la même chose que courir arp -e parce que c'est le défaut. - simplegamer


Si votre réseau est 192.168.0.0/24, créez un fichier exécutable avec le code suivant; Changer la 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

13
2018-05-17 18:45



Bonjour Anders ... Le réseau de l'utilisateur peut ne pas être 192.168.0.0/24; J'ai fait une note. La mise en forme du site n'aime pas la mise à jour #! Et le formatage de l'extrait de code: lors de la saisie du code, utilisez les boutons de texte ou de texte pré-formaté, puis examinez votre réponse afin de la formater et les espaces ont peut-être été dépouillés. - Nevin Williams
De même, lorsque vous fournissez un script qui doit être placé dans un fichier et rendu exécutable, plutôt que simplement copier-coller, il est probablement préférable que vous spécifiiez ceci; pour certains, il n'est peut-être pas évident que tout est nécessaire pour implémenter votre solution. - Nevin Williams
Techniquement, cela ne renverra que les hôtes qui répondent à ping. Il se peut que des hôtes soient connectés, mais ne répondent pas aux demandes d'écho ICMP. De même, il est possible de diffuser un paquet sur 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 accomplit la même chose que la boucle for. - Nevin Williams
@NevinWilliams (obligatoire -b, supprimé -W pour attendre plus) ping -b -c 1 192.168.0.255 résultat "1 paquet transmis, 0 reçu, 100% de perte de paquet, temps 0ms" - Aquarius Power


Essayez d'installer nmap (sudo apt-get install nmap) et tapez nmap 192.168.1.0/24 en remplaçant 192.168.1 avec les trois premières parties de votre adresse IP (découvrez 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 remplaçant encore 192.168.1), lequel devrait émettre un ping à chaque machine du réseau, mais, selon mon expérience, ne fonctionne pas toujours correctement.


10
2017-09-08 18:56



En fait, aucune des réponses ne fonctionnera toujours correctement. IP n’a pas été conçu avec cette exigence en tête, et il ya des choses comme les VLAN privés qui rendent impossible de trouver d’autres hôtes sur le même réseau local. - Ron Maupin


Entré avec ce qui suit sur un lien en utilisant tmux comme arp-scan n'est pas dans le repo mais nmap est pré-installé, affiche uniquement les adresses IP:

nmap -sn 192.168.1.1-254/24 | egrep "scan report" | awk '{print $5}'

2
2017-10-30 20:33





Pour une liste plus compacte des périphériques connectés:

nmap -sL 192.168.0.* | grep \(1

Explication.

nmap -sL 192.168.0.* listera toutes les IP du sous-réseau et marquera celles qui ont un nom:

Nmap scan report for 192.168.0.0
Nmap scan report for Dlink-Router.Dlink (192.168.0.1)
Nmap scan report for 192.168.0.2
...
Nmap scan report for android-473e80f183648322.Dlink (192.168.0.53)
...
Nmap scan report for 192.168.0.255

Comme tous les enregistrements intéressants commencent par des parenthèses ( et chiffre 1, nous filtrons pour cela avec | grep \(1 (la barre oblique inverse est nécessaire pour échapper aux parenthèses)

Bizarrerie
Attention, si deux appareils portent le même nom, nmap affichera seulement celui qui était connecté au routeur dernier


0
2017-10-20 10:32



Si vous avez exactement la même réponse pour deux questions, il peut être utile de considérer les questions comme des doublons plutôt que de poster des réponses en double. De cette façon, les connaissances peuvent être partagées lorsque des questions similaires sont liées. - Mokubai♦
@Mokubai Vous avez raison, j'ai ajouter un commentaire à l'OP. Cela montre un problème intéressant. UNE rapide recherche a découvert 6 doublons (ce Q et 5 liens) sur 4 sites réseau (SU, Ask Ubuntu, SF, Unix). Bien sûr, il y en a beaucoup plus! Comment puis-je gérer cela? Idéalement, chacun de ces 6 messages devrait être relié à 5 autres. L’ajout de tous ces liens à la main n’est pas évident. Donc, pour le moment je suis lié à ce post (le plus voté). Un autre problème est qu'il est impossible de marquer Q sur AskUbuntu comme une copie du Q sur SU. Hm ... Probablement, cela a déjà été discuté sur le meta? - Alexander Malakhov
ne fonctionne pas pour moi sur Centos 7, répertorie simplement toutes les adresses IP possibles dans le réseau sans noms. arp-scan a fonctionné pour moi. - Jeff


Ellaboring sur la réponse d'Anders Larrson -

#!/bin/bash
function scan ()
{
    for ip in $1.{1..254}; do
        ping -c 1 -W 1 $ip &
    done | sed -nE 's:^.* from ([0-9.]+).*time=(.*s)$:\1 (\2):p'
}

if [ $1 ]; then
    for baseip; do
        scan $baseip
    done
else
    scan 192.168.1
fi

0
2017-07-06 10:04