This commit is contained in:
ddrwode
2026-02-03 13:09:01 +08:00
parent 71804dfb84
commit 984223c720
10 changed files with 27603 additions and 479 deletions

View File

@@ -10,23 +10,23 @@ class NetworkIPGetter:
self.interfaces = psutil.net_if_addrs()
def get_wlan_ip(self):
"""获取无线网卡IP优先"""
return self._get_interface_ip(['WLAN', 'Wi-Fi', 'WiFi', 'Wireless'])
"""获取无线网卡IP优先。Windows: WLAN/Wi-FimacOS: en0/en1通常为 Wi-Fi"""
return self._get_interface_ip(['WLAN', 'Wi-Fi', 'WiFi', 'Wireless', 'en0', 'en1'])
def get_ethernet_ip(self):
"""获取有线网卡IP"""
return self._get_interface_ip(['Ethernet', '以太网', 'eth', 'enp'])
"""获取有线网卡IP。Windows: EthernetLinux: eth/enpmacOS: en2/en3 等"""
return self._get_interface_ip(['Ethernet', '以太网', 'eth', 'enp', 'en2', 'en3', 'en4'])
def _get_interface_ip(self, keywords):
"""根据关键词查找接口IP"""
for iface_name, addrs in self.interfaces.items():
iface_lower = iface_name.lower()
if any(keyword.lower() in iface_lower for keyword in keywords):
for addr in addrs:
if addr.family == socket.AF_INET:
# 排除一些虚拟/私有地址
if not self._is_virtual_ip(addr.address):
return addr.address
"""根据关键词查找接口IP(按 keywords 顺序优先匹配)"""
for keyword in keywords:
kw_lower = keyword.lower()
for iface_name, addrs in self.interfaces.items():
if kw_lower in iface_name.lower():
for addr in addrs:
if addr.family == socket.AF_INET:
if not self._is_virtual_ip(addr.address):
return addr.address
return None
def _is_virtual_ip(self, ip):
@@ -67,15 +67,15 @@ class NetworkIPGetter:
return result
# # 使用示例
# if __name__ == "__main__":
# getter = NetworkIPGetter()
#
# # 获取WLAN IP
# wlan_ip = getter.get_wlan_ip()
# print(f"WLAN IPv4地址: {wlan_ip}")
#
# # 获取首选IP
# main_ip = getter.get_preferred_ip()
# print(f"首选IP地址: {main_ip}")
# 使用示例
if __name__ == "__main__":
getter = NetworkIPGetter()
# 获取WLAN IP
wlan_ip = getter.get_wlan_ip()
print(f"WLAN IPv4地址: {wlan_ip}")
# 获取首选IP
main_ip = getter.get_preferred_ip()
print(f"首选IP地址: {main_ip}")