2016-05-10 2 views
1

J'ai une machine Linux qui est connectée directement à un Raspberry Pi via un câble Ethernet. Existe-t-il un moyen de programmer en C obtenir l'adresse MAC du Raspberry Pi en fonction du port Ethernet sur mon ordinateur auquel il est connecté (eth0, eth1 etc ...)Demande d'adresse MAC à partir de Raspberry Pi

Par exemple, disons que j'ai deux Raspberry Pi, un connecté à eth0 et un autre à eth1. Je voudrais obtenir l'adresse MAC de seulement le Pi qui est connecté à eth0. Comment ferais-je cela?

Répondre

1

Selon vous connaissez l'adresse IP du Pi, il y a deux cas:

  • Pi a l'adresse IP et sont connus à votre programme, vous pouvez envoyer des données à elle, par exemple un paquet ICMP PING, la pile de réseau enverra ARP demandes pour l'adresse, et quand le Pi répond avec son adresse MAC, vous pouvez l'obtenir de la table ARP, qui peut être visualisée par la commande arp -n.

  • L'adresse IP de Pi ne sait pas, alors vous envoyez un paquet de diffusion via l'interface connectée, eth0 dans ce cas, par exemple, ping -b -I eth0 255.255.255.255, Pi également répondre avec son adresse MAC, et vous pouvez l'obtenir à partir de la table arp locale.

Maintenant, pour savoir comment faire de manière programmatique, vous pouvez envoyer le paquet à l'aide raw sockets et table de lecture arp par l'analyse de l'entrée de proc /proc/net/arp.

+0

Parfait, réponse géniale merci. – Nicolas