python3获取linux IP地址

本文分享了如何使用Python获取机器IP地址的方法,通过自定义函数get_ip实现,并解决了因网卡名称不同导致的错误。文章提供了调试过程及正确调用方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景:我想知道哪台机器上跑了代码,打算用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 查看网卡名

在这里插入图片描述

这样调用即可:
print(self.get_ip(if_name=b'ens32'))
或者 sudo vim /etc/yah3c.conf 把 ens32改成eth0. 前提是Ubuntu安装了 YaH3C.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笑笑布丁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值