Si Python est un must, vous pouvez consulter cet article:
http://code.activestate.com/recipes/439094-get-the-ip-address-associated-with-a-network-inter/
Ils soulignent à juste titre qu'un ordinateur a autant d'adresses IP que d'interfaces réseau.
Voici leur code pour obtenir l'adresse IP d'une carte réseau, j'ai testé le code et ça marche:
import socket
import fcntl
import struct
def get_ip_address(ifname):
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
return socket.inet_ntoa(fcntl.ioctl(
s.fileno(),
0x8915, # SIOCGIFADDR
struct.pack('256s', ifname[:15])
)[20:24])
print get_ip_address('lo')
print get_ip_address('eth0')
Si votre RPi est connecté via WiFi, le nom de l'adaptateur doit être wlan0
Sinon, vous pouvez l'obtenir avec la ip
commande:
ip addr show eth0 | grep inet
Vous devriez obtenir quelque chose comme:
inet 192.168.0.140/24 brd ....
Voilà votre adresse IP.
Bien sûr, rien de tout cela ne fonctionnera si vous démarrez simplement votre RPi et ne pouvez pas vous y connecter car vous ne connaissez pas l'adresse IP! Si c'est le cas, votre serveur DHCP sera sûrement en mesure de vous dire quelle adresse IP il vient de donner au RPi (ou vous les essayez tous :))
Cela dit, vous pourriez bénéficier du référencement de votre RPi par son nom et, puisque vous utilisez un Mac, la meilleure solution serait probablement d'installer avahi-daemon:
sudo apt-get install avahi-daemon
qui implémente la spécification Apple Zeroconf (comme Bonjour). Vous pouvez ensuite accéder à votre RPi par nom:
ssh pi@raspberry.local
J'ai utilisé une approche différente pour mes deux framboises (nommées ygdrasill et dvalinn ): j'ai opté pour une IP fixe (192.168.0.140 et 192.168.0.142) afin que je puisse également utiliser le fichier etc / hosts sur certaines de mes autres machines.
J'aurais pu configurer un DNS interne ou compter sur Wins, mais la solution actuelle fonctionne pour moi.