web-dev-qa-db-fra.com

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

À l'aide d'Ubuntu 10.10, je me demandais s'il existait une commande de ligne de commande permettant de répertorier toutes les adresses IP des périphériques connectés au réseau.

J'utiliserais cela 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 vais l'exécuter à partir de C++.

Des idées?

212

Découvrez la commande 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
237
Linker3000

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

110
Keith

Dans Windows, cela serait "arp -a". Je pense qu'un équivalent de cela dans Linux serait "arp -e".

Cette information peut être trouvée à partir de la page de manuel 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).
19
David

Si votre réseau est 192.168.0.0/24, créez un fichier exécutable avec le code suivant; Changez le 192.168.0 en 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
15
Anders Larsson

Essayez d’installer nmap (Sudo apt-get install nmap) et tapez nmap 192.168.1.0/24 en remplaçant 192.168.1 par les trois premières parties de votre adresse IP (découvrez-le à l’aide de 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 une ping pour chaque machine du réseau, mais, selon mon expérience, cela ne fonctionne pas. toujours fonctionner correctement.

12
Samadi

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

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

Pour une liste plus compacte d'appareils connectés:

nmap -sL 192.168.0.* | grep \(1

Explication.

nmap -sL 192.168.0.* liste toutes les adresses IP du sous-réseau et marque 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 la parenthèse ( et le chiffre 1, nous filtrons pour cela avec | grep \(1 (une barre oblique inverse est nécessaire pour échapper à la parenthèse)

Quirk
Attention, si deux périphériques portent le même nom, nmap affichera uniquement celui qui a été connecté au routeur last

0
Alexander Malakhov

Ellaborating sur la réponse de 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
Mathieu CAROFF