Ric*_*son 7 python ip networking dhcp network-interface
在Python中,有没有办法检测给定的网络接口是否已启动?
在我的脚本中,用户指定了一个网络接口,但我想确保接口已启动并且已经分配了IP地址,然后再执行其他操作.
我在Linux上,我是根.
接口可以配置一个IP地址而不是up,因此接受的答案是错误的.你真的需要检查/sys/class/net/<interface>/flags.如果内容在变量标志中,flags & 0x1则表示接口是否已启动.
根据应用程序的不同,/sys/class/net/<interface>/operstate可能是您真正想要的,但从技术上讲,接口可以向上和operstate向下,例如,当没有连接电缆时.
所有这些当然都是针对Linux的.
正如@Gabriel Samfira建议的那样,我用过netifaces.当IP地址与给定接口关联时,以下函数返回True.
def is_interface_up(interface):
addr = netifaces.ifaddresses(interface)
return netifaces.AF_INET in addr
Run Code Online (Sandbox Code Playgroud)
文档在这里
使用psutil回答:
import psutil
import socket
def check_interface(interface):
interface_addrs = psutil.net_if_addrs().get(interface) or []
return socket.AF_INET in [snicaddr.family for snicaddr in interface_addrs]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19377 次 |
| 最近记录: |