J'exécute un script Python sur le Raspberry Pi afin d'extraire des données mesurées d'une Smart Plug. Dans mon script, j'ai besoin d'écrire l'adresse IP de la prise intelligente afin de pouvoir récupérer les données mesurées. Le problème est que je dois être capable d'emporter la Smart Plug à différents endroits sans avoir à coder en dur sa nouvelle adresse IP locale à chaque fois.
J'ai l'adresse MAC donc j'espère qu'il existe un moyen "simple" d'ajouter quelques lignes de code et de récupérer l'adresse IP locale du MAC (?) dans le script Python. Merci!
3 Réponses :
L'adresse IP locale n'est pas basée sur l'adresse MAC. Le routeur utilise DHCP pour donner aux appareils une adresse IP. Il n'y a donc aucun moyen de dire au routeur quelle adresse IP il doit vous donner autre que de modifier les paramètres.
Je préfère essayer de diffuser l'ip et sur la framboise d'écouter sur le canal de diffusion le message que vous recherchez.
Ce que vous décrivez peut être accompli en en créant un paquet ARP pour obtenir ces informations .
En général, quelque chose comme:
from scapy.all import srp, Ether, ARP ans,unans=srp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst="192.168.1.0/24"),timeout=2) ip = pkt[ARP].psrc
Ceci peut être réalisé en utilisant la commande arp dans le module de sous-processus. Voici le code. Enregistré dans Windows.
import subprocess cmd = 'arp -a | findstr "ff-ff-ff-ff-ff-ff" ' returned_output = subprocess.check_output((cmd),shell=True,stderr=subprocess.STDOUT) print(returned_output) parse=str(returned_output).split(' ',1) ip=parse[1].split(' ') print(ip[1])
Vous pouvez mettre votre carte réseau en mode promiscuité et renifler les paquets ARP. Mais si vous êtes de l'autre côté d'un commutateur de l'appareil, vous ne verrez peut-être jamais ces paquets de toute façon. En général, ARP fonctionne pour résoudre les adresses IP en adresses MAC, et non l'inverse. L'appareil peut-il diffuser quelque chose sur lui-même lorsqu'il se connecte à un réseau?
@DanielPryden Bonjour et merci pour votre réponse. Je suis assez nouveau dans ce domaine donc pour être honnête, je ne comprends pas vraiment ce que vous entendez par «diffuser» quelque chose. Peux-tu réessayer?
Je n'ai aucune idée de quel type de "Smart Plug" il s'agit (je suppose une sorte de dispositif de contrôle de prise de courant?), Donc je n'ai aucune idée de ce qui est possible, c'est pourquoi je n'écris pas de réponse. L'essentiel de mon commentaire est qu'il est presque certainement impossible pour votre Raspberry Pi de déterminer l'adresse IP d'un autre appareil, même s'il connaît l'adresse MAC de l'adaptateur physique de cet appareil, à moins que cet autre appareil ne transmette des paquets au réseau lui-même. La solution normale est que le périphérique soit configuré pour envoyer des paquets UDP de diffusion de quelque sorte que ce soit jusqu'à ce que quelqu'un le remarque et commence à communiquer.
Peut-être cette stackoverflow.com/questions / 1750803 /…
ma solution pour obtenir l'adresse IP du MAC est ici stackoverflow.com/questions/60571731