python3获取linux IP地址

背景:我想知道哪台机器上跑了代码,打算用ip地址作为甄别的依据.

代码:

   def get_ip(if_name):  # get machine ip
       s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
       return socket.inet_ntoa(fcntl.ioctl(
           s.fileno(),
           0x8915,  # SIOCGIFADDR
           struct.pack('256s', if_name[:15])
       )[20:24])

注意的点,python3 struct 加入了bytes,所以是这样调用

print(self.get_ip(if_name=b'eth0'))

碰到的问题:OSError: [Errno 19] No such device

原因:是公司的Ubuntu的网卡名并不叫这个名字.

解决办法:sudo lshw -C network 查看网卡名

python3获取linux IP地址_第1张图片

这样调用即可:

print(self.get_ip(if_name=b'ens32'))

或者 sudo vim /etc/yah3c.conf 把 ens32改成eth0. 前提是Ubuntu安装了 YaH3C.

你可能感兴趣的:(python,linux,错误)