Я использую Mac OSx для доступа к своему Pi через SSH. Чтобы получить к нему доступ, я знаю, что мне нужен IP-адрес Пи. Итак, я решил использовать несколько команд Python, которые всегда давали мне локальный IP.
import socket
host_name = socket.gethostname()
host_ip = socket.gethostbyname(host_name)
print host_ip
Как ни странно, я получил только локальный IP-адрес хоста (127.0.1.1).
Может кто-нибудь сказать мне, как получить правильный локальный / глобальный (в зависимости от того, что лучше, это нужно только для работы по локальной сети) IP для PI?
ssh
? Конечно, вам нужен IP-адрес перед вамиssh
.Ответы:
Если Python является обязательным, вы можете проверить эту статью: http://code.activestate.com/recipes/439094-get-the-ip-address-associated-with-a-network-inter/
Они справедливо указывают, что компьютер имеет столько же IP-адресов, сколько сетевых интерфейсов.
Вот их код для получения IP-адреса сетевого адаптера, я проверил код, и он работает:
Если ваш RPi подключен через WiFi, имя адаптера должно быть
wlan0
В противном случае вы можете получить его с помощью
ip
команды:Вы должны получить что-то вроде:
Это твой IP-адрес.
Конечно, ничего из этого не будет работать, если вы просто загрузите свой RPi и не сможете подключиться к нему, потому что вы не знаете IP-адрес! Если это так, ваш DHCP-сервер наверняка сможет сказать вам, какой IP-адрес он только что дал RPi (или вы просто попробуете их все :))
Тем не менее, вам может быть полезно ссылаться на ваш RPi по имени, и, поскольку вы используете Mac, вероятно, лучшим решением будет установка avahi-daemon:
который реализует спецификацию Apple Zeroconf (например, Bonjour). Затем вы можете SSH к вашему RPi по имени:
Я использовал другой подход для двух моих Raspberrys (названных ygdrasill и dvalinn ): я выбрал фиксированный IP (192.168.0.140 и 192.168.0.142), поэтому я также могу использовать файл etc / hosts на некоторых других моих машинах.
Я мог бы настроить внутренний DNS или полагаться на Wins, но текущее решение работает для меня.
источник
ssh pi@raspberrypi.local
дано имя хоста по умолчанию для RPiraspberrypi
. Почему avahi-daemon не является универсально установленным в мире Debian, мне не понятно. Специальные сети - это мечта, когда она работает «из коробки».Этот код:
работает только под python 2.7, с python 3 не работает, вы получите ошибку, что аргумент для 's' должен быть байтовым объектом ...
источник
python3
?Сокет может вернуть localhost, в зависимости от того, как установлена ОС. Так что это не портативно.
Этот ответ о стеке потока о получении IP через python полезен - он объясняет проблему с / etc / hosts и дает достойный обходной путь. Он не идеален (ipv6), и если у вас есть несколько связанных IP-адресов, он может не найти маршрутизируемую версию, но для ваших нужд это хороший сторонник.
С командной строки,
ifconfig
твой друг. Обычно в нем перечислены все ваши связанные интерфейсы и тому подобное.источник