Якщо Python є обов'язковим, ви можете перевірити цю статтю:
http://code.activestate.com/recipes/439094-get-the-ip-address-associated-with-a-network-inter/
Вони справедливо зазначають, що комп'ютер має стільки IP-адрес, скільки мережевих інтерфейсів.
Ось їх код, щоб отримати IP-адресу мережевого адаптера, я перевірив код, і він працює:
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')
Якщо ваш RPi підключений через WiFi, має бути назва адаптера wlan0
Інакше ви можете отримати його за допомогою ip
команди:
ip addr show eth0 | grep inet
Ви повинні отримати щось на кшталт:
inet 192.168.0.140/24 brd ....
Це ваша IP-адреса.
Звичайно, нічого з цього не вийде, якщо ви просто завантажите RPi і не зможете підключитися до нього, оскільки ви не знаєте IP-адреси! Якщо це так, ваш DHCP-сервер, безумовно, зможе сказати вам, яку IP-адресу він щойно дав RPi (або ви просто спробуйте їх усі :))
Це означає, що ви можете скористатись посиланням RPI по імені, а оскільки ви використовуєте Mac, мабуть, найкращим рішенням буде встановлення avahi-daemon:
sudo apt-get install avahi-daemon
яка реалізує специфікацію Apple Zeroconf (наприклад, Bonjour). Потім ви можете ввімкнути ssh до свого RPi за назвою:
ssh pi@raspberry.local
Я використовував інший підхід для моїх двох Raspberrys (з назвою ygdrasill і dvalinn ): я вибрав фіксований IP (192.168.0.140 та 192.168.0.142), тому я можу також використовувати файл etc / hosts на деяких інших моїх машинах.
Я міг би створити внутрішній DNS або покластися на Wins, але поточне рішення працює для мене.