À 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?
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
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.
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).
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
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.
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}'
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
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