Obtenir l'adresse MAC en utilisant un script shell
Actuellement à la solution indiquée pour obtenir l'adresse MAC de toujours utiliser eth0.
Mais si au lieu de eth0 mes interfaces commencer avec eth1. Aussi sur OS X, l'interface noms sont différents.
Aussi l'interface eth0 peut être présente mais n'est pas utilisé. c'est à dire non actif, il n'a pas une IP.
Donc, il y a un moyen que je pouvais obtenir l'adresse MAC de l'interface qui est Actif.(c'est à dire qu'il a une inet adresse, je n'en voulez pas avoir inet6).
Pour E. g
eth0 Link encap:Ethernet HWaddr <some addr>
inet6 addr: <some addr> Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:123
RX packets:123 errors:123 dropped:123 overruns:123 frame:123
TX packets:123 errors:123 dropped:123 overruns:123 carrier:123
collisions:123 txqueuelen:123
RX bytes:123 (123 MB) TX bytes:123 (123 KB)
Interrupt:123 Memory:00000000-00000000
eth1 Link encap:Ethernet HWaddr <some addr>
inet addr:<some addr> Bcast:<some addr> Mask:<some addr>
inet6 addr: <some addr> Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:123 Metric:123
RX packets:123 errors:123 dropped:123 overruns:123 frame:123
TX packets:123 errors:123 dropped:123 overruns:123 carrier:123
collisions:123 txqueuelen:123
RX bytes:123 (123 MB) TX bytes:123 (123 KB)
Interrupt:123 Memory:00000000-00000000
NOTE : j'ai modifié les valeurs de la sortie.
Donc, dans ce cas, je veux le HWaddr pour eth1 et pas de eth0.
Comment puis-je le trouver ? Aussi il devrait fonctionner sur tous les Linux saveurs.
source d'informationauteur Pratham | 2014-05-23
Vous devez vous connecter pour publier un commentaire.
Observer que le nom de l'interface et l'adresse MAC sont la première et la dernière champs sur une ligne avec aucun espace.
Si l'une des lignes en retrait contient
inet addr:
le dernier nom de l'interface et l'adresse MAC doit être imprimé.Noter que plusieurs interfaces pourraient répondre à vos critères. Ensuite, le script va imprimer plusieurs lignes. (Vous pouvez ajouter
; exit
juste avant la dernière accolade fermante si vous ne souhaitez imprimer que le premier match.)Vous pouvez le faire comme suit
Vous pouvez également avoir un MAC pour l'ensemble de l'interface comme suit
Pour interface particulière comme pour eth0
Le meilleur spécifique à Linux, la solution est d'utiliser sysfs:
Cette méthode est très propre par rapport aux autres et engendre aucun processus supplémentaires depuis
read
est une interface de commande pour POSIX coquilles, y compris les non-BASH coquilles. Toutefois, si vous avez besoin d'une portabilité vers OS X, alors vous aurez à utiliserifconfig
etsed
méthodes, depuis OS X ne dispose pas d'un système de fichiers virtuel de l'interface comme sysfs.retour: eth0 (mon interface en ligne)
retour: ce:a8:6b:bd:55:05 (macaddress de l'eth0, mon interface en ligne)
Terminal de l'image
Sur un système GNU/Linux, vous pouvez voir les interfaces réseau disponibles liste le contenu de
/sys/class/net/
par exemple:Vous pouvez vérifier si une interface est
up
regardantoperstate
dans le répertoire de l'appareil. Par exemple, voici comment vous pouvez voir sienp0s25
:Vous pouvez ensuite obtenir l'adresse MAC de l'interface avec:
Par exemplevoici un simple script bash qui permet d'imprimer les adresses MAC pour les interfaces actives:
Et voici sa sortie sur un système avec un port ethernet et une interface wifi:
Pour les détails, voir le Documentation du noyau
Rappelez-vous aussi qu'à partir de 2015 la plupart des distributions GNU/Linux passé à
systemd
et n'utilisez pasethX
interface schéma de nommage des plus - maintenant, ils utilisent un plus robuste convention de nommage basé sur le matériel de la topologie, voir:oh, si vous voulez seulement le mac éther adresse mac, vous pouvez utiliser:
(travail sur macintosh)
ifconfig
-- obtenir toutes les infosgrep
- garder la ligne avec l'adressetr
-- nettoyer tous lescut
-- supprimer la "éther" pour avoir seulement l'adresseObtenir d'adresse MAC pour eth0:
Exemple: