如果必须使用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而无法连接到RPi,因为您不知道IP地址,那么所有这些都将无效!如果是这种情况,那么您的DHCP服务器肯定可以告诉您他刚刚给RPi分配了哪个IP地址(或者您只需尝试所有:))
就是说,按名称引用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,但是当前的解决方案对我有用。