怎样用python判断当前是无线网络连接,还是有线网络连接,并做内外网切换?

怎样用python判断当前是无线网络连接,还是有线网络连接,并做内外网切换?

windows系统,安装无线网卡,既可以连接wifi连接内网,也可以有线连接内网。怎样用python判断当前是无线网络连接,还是有线网络连接?并做到内外网切换?
谢谢


回答:

如果是dhcp动态获取ip的话,可以考虑,分别读取下两张网卡的ip,如果可以正常获取到ip,说明网卡工作是正常的。如果两张都有ip,那就按需要禁用其中一张就可以


回答:

调用ipconfig /all命令并且分析输出,里面会有windows起的网络适配器名字和它当前的网络配置状况,
输出格式就不贴了,自己运行一下就能看到
没有提示“媒体已断开连接的”,并且有具体IP地址、默认网关等参数的,可以认为是当前可用适配器
注意可用适配器可以不止一个

一个快速粗暴,不考虑通用性的做法是

#切换到无线网

ipconfig /release *以太网适配器*

ipconfig /renew *无线局域网适配器*

#切换到有线

ipconfig /release *无线局域网适配器*

ipconfig /renew *以太网适配器*


回答:

除了直接执行系统命令,还可以用psutil获取网络接口信息:

psutil.net_if_stats()返回所有接口的名称和状态,结果中的isup可以判断网络是否启用。
psutil.net_if_addrs()返回所有接口地址信息。
(这两个函数不会返回Windows下被禁用的接口。)

要启用/禁用网络接口,运行系统命令就行了。


回答:

最简单的办法自然是用 subprocess,netsh 和 ipconfig 、VBS+WMI 等等。这些工具都是现成的,你要做的就是解析下这些工具输出的内容。


或者也可以再深入一点,更底层一点的层面实现这些功能。大概就是三个方向:Win32API,WMI,WinAPI 上层封装的跨平台网络库如 libnl 。

  • 列出网络接口(netifaces、WMI-win32-networkadapter)
  • 扫描、连接WiFi(winwifi、pywifi)
  • 用指定的网络接口(网卡)建立socket连接

希望有帮助。

以上是 怎样用python判断当前是无线网络连接,还是有线网络连接,并做内外网切换? 的全部内容, 来源链接: utcz.com/p/937635.html

回到顶部