Si Python es imprescindible, puede consultar este artículo:
http://code.activestate.com/recipes/439094-get-the-ip-address-associated-with-a-network-inter/
Señalan acertadamente que una computadora tiene tantas direcciones IP como interfaces de red.
Aquí está su código para obtener la dirección IP de un adaptador de red, he probado el código y funciona:
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 su RPi está conectado a través de WiFi, el nombre del adaptador debe ser wlan0
De lo contrario, puede obtenerlo con el ip
comando:
ip addr show eth0 | grep inet
Deberías obtener algo como:
inet 192.168.0.140/24 brd ....
Esa es tu dirección IP.
Por supuesto, nada de esto funcionará si solo inicia su RPi y no se puede conectar a él porque no conoce la dirección IP. Si ese es el caso, su servidor DHCP seguramente podrá decirle qué dirección IP le dio al RPi (o simplemente probarlos todos :))
Dicho esto, podría beneficiarse de hacer referencia a su RPi por nombre y, dado que está utilizando una Mac, probablemente la mejor solución sería instalar avahi-daemon:
sudo apt-get install avahi-daemon
que implementa la especificación Apple Zeroconf (como Bonjour). Luego puede enviar ssh a su RPi por nombre:
ssh pi@raspberry.local
Utilicé un enfoque diferente para mis dos Raspberrys (llamados ygdrasill y dvalinn ): opté por una IP fija (192.168.0.140 y 192.168.0.142) para que también pueda usar el archivo etc / hosts en algunas de mis otras máquinas.
Podría haber configurado un DNS interno o confiar en Wins, pero la solución actual funciona para mí.