Nếu Python là bắt buộc, bạn có thể kiểm tra bài viết này:
http://code.activestate.com/recipes/439094-get-the-ip-address-associated-with-a-network-inter/
Họ chỉ ra rằng một máy tính có nhiều địa chỉ IP như giao diện mạng.
Đây là mã của họ để lấy địa chỉ IP của bộ điều hợp mạng, tôi đã kiểm tra mã và nó hoạt động:
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')
Nếu RPi của bạn được kết nối qua WiFi, tên bộ điều hợp sẽ là wlan0
Nếu không, bạn có thể lấy nó bằng ip
lệnh:
ip addr show eth0 | grep inet
Bạn sẽ nhận được một cái gì đó như:
inet 192.168.0.140/24 brd ....
Đó là địa chỉ IP của bạn.
Tất nhiên, điều này sẽ không hoạt động nếu bạn chỉ khởi động RPi của mình và không thể kết nối với nó vì bạn không biết địa chỉ IP! Nếu 'đó là trường hợp máy chủ DHCP của bạn chắc chắn sẽ có thể cho bạn biết địa chỉ IP nào anh ấy đã cung cấp cho RPi (hoặc bạn chỉ cần thử tất cả :))
Điều đó nói rằng, bạn có thể có lợi khi giới thiệu RPi theo tên và, vì bạn đang sử dụng máy Mac, có lẽ giải pháp tốt nhất là cài đặt avahi-daemon:
sudo apt-get install avahi-daemon
trong đó thực hiện đặc tả Apple Zeroconf (như Bonjour). Sau đó, bạn có thể ssh đến RPi của bạn theo tên:
ssh pi@raspberry.local
Tôi đã sử dụng một cách tiếp cận khác nhau cho hai Raspberry của mình (có tên là ygdrasill và dvalinn ): Tôi đã chọn một IP cố định (192.168.0.140 và 192.168.0.142) để tôi cũng có thể sử dụng tệp etc / hosts trên một số máy khác của mình.
Tôi có thể đã thiết lập DNS nội bộ hoặc dựa vào Thắng, nhưng giải pháp hiện tại phù hợp với tôi.