Se Python è un must, puoi consultare questo articolo:
http://code.activestate.com/recipes/439094-get-the-ip-address-associated-with-a-network-inter/
Indicano giustamente che un computer ha tanti indirizzi IP quante interfacce di rete.
Ecco il loro codice per ottenere l'indirizzo IP di una scheda di rete, ho testato il codice e funziona:
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')
Se il tuo RPi è collegato tramite WiFi, dovrebbe essere il nome dell'adattatore wlan0
Altrimenti puoi ottenerlo con il ip
comando:
ip addr show eth0 | grep inet
Dovresti ottenere qualcosa del tipo:
inet 192.168.0.140/24 brd ....
Questo è il tuo indirizzo IP.
Ovviamente nulla di tutto questo funzionerà se avvii il tuo RPi e non riesci a connetterti perché non conosci l'indirizzo IP! In tal caso, il tuo server DHCP sarà sicuramente in grado di dirti quale indirizzo IP ha appena fornito all'RPi (o semplicemente provali tutti :))
Detto questo, potresti trarre vantaggio dal fare riferimento al tuo RPi per nome e, poiché stai usando un Mac, probabilmente la soluzione migliore sarebbe installare avahi-daemon:
sudo apt-get install avahi-daemon
che implementa la specifica Apple Zeroconf (come Bonjour). Puoi quindi ssh sul tuo RPi per nome:
ssh pi@raspberry.local
Ho usato un approccio diverso per i miei due Raspberrys (chiamati ygdrasill e dvalinn ): ho optato per un IP fisso (192.168.0.140 e 192.168.0.142) in modo da poter usare anche il file etc / hosts su alcune delle mie altre macchine.
Avrei potuto impostare un DNS interno o fare affidamento su Win, ma la soluzione attuale funziona per me.