haha
This commit is contained in:
48
tools.py
48
tools.py
@@ -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-Fi;macOS: 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: Ethernet;Linux: eth/enp;macOS: 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}")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user