python脚本使用pywifi连接wifi
时间: 2024-12-22 13:26:04 浏览: 8
在Python中,你可以使用第三方库`pywifipasswords`和`netifaces`来连接WiFi。首先,你需要安装这两个库:
```bash
pip install pywifipasswords netifaces
```
然后,你可以按照以下步骤编写一个简单的脚本来连接WiFi:
```python
import getpass
from pywifipasswords import wifi_passwords
import netifaces
def connect_to_wifi(ssid, password):
# 获取网络接口列表
interfaces = netifaces.interfaces()
# 找到无线网卡(通常为'wlan0', 'en0', 等)
wlan_interface = None
for interface in interfaces:
if 'wlan' in interface or 'en' in interface:
wlan_interface = interface
break
if not wlan_interface:
print("未找到可用的无线网卡")
return
# 检查是否已经连接了指定的SSID
if netifaces.AF_INET in netifaces.ifaddresses(wlan_interface):
current_ssid = netifaces.ifaddresses(wlan_interface)[netifaces.AF_INET][0][' ssid']
if current_ssid == ssid:
print(f"已连接到 {ssid}")
return
# 寻找匹配的WiFi密码
passwords = wifi_passwords.search_by_ssid(ssid)
if passwords:
password = passwords[0] # 使用第一个匹配的密码
else:
print(f"找不到密码 for SSID {ssid}")
return
# 连接WiFi
try:
from subprocess import check_call
check_call(['sudo', 'nmcli', 'device', 'connect', '--type', 'wifi', '-i', wlan_interface, ssid, '--password', password])
print(f"成功连接到 {ssid}!")
except Exception as e:
print(f"连接失败: {str(e)}")
# 示例使用
connect_to_wifi('your_SSID', getpass.getpass('请输入WiFi密码: '))
```
这个脚本会尝试连接给定的SSID,并从`pywifipasswords`库中查找匹配的密码。注意,在实际应用中,为了安全起见,你可能需要使用更复杂的方式来获取用户输入的密码,而不是直接显示。
阅读全文