หาก 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 address ใดที่เขาเพิ่งมอบให้กับ 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 ได้ แต่โซลูชันปัจจุบันใช้ได้สำหรับฉัน