24 votes

Comment trouver tous les appareils (adresse IP, nom d'hôte, adresse MAC) sur un réseau local ?

J'ai lu presque toutes les discussions à ce sujet, mais personne n'a encore réussi à faciliter l'accès à un tableau comme celui qui suit.

  IP Address     Hostname        MAC Address
  192.168.1.10 | myAppleTV     | 02:78:42:9b:bb:12
  192.168.1.10 | myiPhone      | b2:18:4a:3a:42:22
  192.168.1.10 | myiMac        | 09:17:a2:95:c4:00
  192.168.1.10 | myCanonPrinter| a0:ea:72:77:b4:aa

La plupart du temps, j'utilise arp -a et il y a aussi dns-sb mais aucun d'entre eux ne permet de trouver facilement trois informations essentielles lorsque je me balade sur le réseau, à savoir l'adresse IP, le nom d'hôte et l'adresse MAC. Je suis surpris qu'il n'y ait pas un utilitaire qui permette de faire cela !

0 votes

Ce type d'information se trouve principalement sur le routeur.

26voto

Haentz Points 302

Si l'utilisation d'un utilitaire tiers n'est pas un problème pour vous, je vous recommande de les essayer :

arp-scan (disponible via Homebrew )

brew install arp-scan
arp-scan --localnet

fing (téléchargez et installez le paquet "Desktop Embedded CLI" à partir de l'adresse suivante fing.com ou via Homebrew brew cask install fing )

sudo fing -r 1 -d true -o table,text

Les deux utilitaires disposent d'un certain nombre de modes et de fonctions supplémentaires. Je vous suggère de lire les manuels dans leur intégralité pour en tirer le meilleur parti.

Si vous devez éviter d'utiliser des outils tiers alors voici un moyen de faire quelque chose de similaire avec des commandes intégrées. Vous pouvez les exécuter de manière interactive, mais il est probablement plus facile de l'enregistrer comme un script. N.B. Pour faire court, ce script ne fait aucun contrôle d'erreur, et ne fonctionne que sur les sous-réseaux /24. Le modifier pour qu'il fonctionne sur des sous-réseaux d'autres tailles est laissé comme un exercice au lecteur :)

#!/usr/bin/env bash
tab=$'\t'
pIF=$(echo "show State:/Network/Global/IPv4" | scutil | awk -F: '/PrimaryInterface/{sub(/ /,"",$2); print $2}')
sn=$(ipconfig getifaddr $pIF | sed -En 's/^([0-9]+\.[0-9]+\.[0-9]+).*/\1/p')
for i in {1..254}; do ping -i0.1 -W100 -c1 $sn.$i | grep from; done
arp -a | grep $pIF | sed -e 's/^\?/unnamed/' -e "s/\ at\ /${tab}/g" -e "s/\ on\ /${tab}/g" -e 's/\ ifscope.*$//g' | awk 'BEGIN { FS="\t"; OFS="\t"; printf "%-17s\t%-15s\t%s\n", "MAC","INTERFACE","HOSTNAME (IP)" } { if($2!="(incomplete)") {printf "%-17s\t%-15s\t%s\n",$2,$3,$1}}'

Cela devrait donner quelque chose comme :

MAC                 INTERFACE       HOSTNAME (IP)
0:90:b:7a:85:62     en0             r1.lan (192.168.20.1)
2c:36:f8:48:2b:47   en0             cisco-sg300-10p.lan (192.168.20.2)
84:78:ac:a6:95:a0   en0             cisco-sg300-20.lan (192.168.20.3)
b4:fb:e4:cb:93:85   en0             wap1.lan (192.168.20.10)
0:11:32:10:cd:c1    en0             nas.lan (192.168.20.20)
0:11:32:3d:99:c9    en0             nas2.lan (192.168.20.21)
0:11:32:10:cd:c1    en0             unnamed (192.168.20.23)
d4:4b:5e:fe:6a:75   en0             brwd44b5efe6a75.lan (192.168.20.90)

0 votes

--localnet n'a pas fonctionné pour moi mais ceci a fonctionné (directement de la page de manuel) : arp-scan --interface=en1 192.168.0.0/24

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X