Estoy usando Mac OSx para acceder a mi Pi a través de SSH. Para acceder a él, sé que necesito la dirección IP de Pi. Entonces, decidí usar algunos comandos de Python que siempre han tenido éxito en darme la IP local.
import socket
host_name = socket.gethostname()
host_ip = socket.gethostbyname(host_name)
print host_ip
Curiosamente, solo obtuve la IP del host local (127.0.1.1).
¿Alguien puede decirme cómo obtener la IP local / global adecuada (lo que sea mejor, esto solo necesita funcionar a través de LAN por ahora) IP para el PI?
ssh
esto? Seguramente necesita la dirección IP antes que ustedssh
.Respuestas:
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:
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:Deberías obtener algo como:
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:
que implementa la especificación Apple Zeroconf (como Bonjour). Luego puede enviar ssh a su RPi por nombre:
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í.
fuente
ssh [email protected]
le debe dar el nombre de host predeterminado para un RPiraspberrypi
. Por qué avahi-daemon no está instalado universalmente en el mundo Debian está más allá de mí. Las redes ad-hoc son un sueño cuando salen de la caja.Este código:
solo funciona con python 2.7, no funciona con python 3, obtendrá el error de que el argumento para 's' debe ser un objeto byte ...
fuente
python3
?el socket puede devolver el host local, dependiendo de cómo esté configurado el sistema operativo. Entonces no es portátil.
Esta respuesta de stackoverflow sobre cómo obtener IP a través de Python es útil: explica el problema con / etc / hosts y ofrece una solución decente. No es perfecto (ipv6), y si tiene varias direcciones IP enlazadas, es posible que no encuentre la versión enrutable, pero para sus necesidades es una buena línea.
Desde la línea de comandos,
ifconfig
es tu amigo. Por lo general, enumerará todas sus interfaces enlazadas y demás.fuente