Estou usando o Mac OSx para acessar meu Pi via SSH. Para acessá-lo, eu sei que preciso do endereço IP do Pi. Então, decidi usar alguns comandos Python que sempre conseguiam me fornecer o IP local.
import socket
host_name = socket.gethostname()
host_ip = socket.gethostbyname(host_name)
print host_ip
Por incrível que pareça, apenas obtive o IP do host local (127.0.1.1).
Alguém pode me dizer como obter o IP local / global adequado (o que for melhor, isso só precisa funcionar na LAN por enquanto) IP para o PI?
ssh
? Certamente você precisa do endereço IP antes de vocêssh
.Respostas:
Se o Python for obrigatório, você pode verificar este artigo: http://code.activestate.com/recipes/439094-get-the-ip-address-associated-with-a-network-inter/
Eles apontam, com razão, que um computador tem tantos endereços IP quanto interfaces de rede.
Aqui está o código para obter o endereço IP de um adaptador de rede, testei o código e funciona:
Se o seu RPi estiver conectado via WiFi, o nome do adaptador deve ser
wlan0
Caso contrário, você pode obtê-lo com o
ip
comando:Você deve obter algo como:
Esse é o seu endereço IP.
Obviamente, nada disso funcionará se você apenas inicializar o seu RPi e não conseguir se conectar a ele porque não sabe o endereço IP! Se 'for esse o caso, seu servidor DHCP certamente poderá dizer qual endereço IP ele acabou de fornecer ao RPi (ou você apenas tenta todos eles :))
Dito isso, você pode se beneficiar de fazer referência a sua RPi por nome e, como você está usando um Mac, provavelmente a melhor solução seria instalar o avahi-daemon:
que implementa a especificação Apple Zeroconf (como Bonjour). Você pode então ssh para o seu RPi pelo nome:
Usei uma abordagem diferente para meus dois Raspberrys (chamados ygdrasill e dvalinn ): optei por um IP fixo (192.168.0.140 e 192.168.0.142), para que eu também possa usar o arquivo etc / hosts em algumas de minhas outras máquinas.
Eu poderia ter configurado um DNS interno ou confiar no Wins, mas a solução atual funciona para mim.
fonte
ssh [email protected]
receber o nome de host padrão para um RPiraspberrypi
. Por que o avahi-daemon não é universalmente instalado no mundo Debian está além de mim. As redes ad-hoc são um sonho quando se trabalha fora da caixa.Este código:
só funciona no python 2.7, não funciona no python 3, você receberá o erro de que o argumento para 's' deve ser um objeto de byte ...
fonte
python3
?O socket pode retornar o host local, dependendo de como o sistema operacional estiver configurado. Portanto, não é portátil.
Essa resposta do stackoverflow sobre a obtenção de IP via python é útil - explica o problema com o / etc / hosts e fornece uma solução decente. Não é perfeito (ipv6), e se você tiver vários IPs vinculados, pode não encontrar a versão roteável, mas para as suas necessidades é um bom guia.
A partir da linha de comando,
ifconfig
é seu amigo. Geralmente, lista todas as suas interfaces vinculadas e tal.fonte