本文目录导读:

是的,可以通过脚本自动扫描WiFi信号强度,以下是适用于不同操作系统的实用脚本方案:
Windows (PowerShell)
# 扫描WiFi信号强度
$wlan = New-Object -ComObject "WlanClient.WlanInterface"
$networks = $wlan.GetAvailableNetworkList(0)
$networks | ForEach-Object {
[PSCustomObject]@{
SSID = $_.SSID
SignalStrength = $_.SignalQuality
Security = $_.SecurityEnabled
}
} | Sort-Object SignalStrength -Descending | Format-Table -AutoSize
Linux (Bash)
#!/bin/bash
# 需要nmcli工具 (NetworkManager)
# 方法1: 使用nmcli
echo "=== WiFi扫描结果 ==="
nmcli dev wifi list | awk 'NR>1 {print $1, $2, $8}'
# 方法2: 更详细的信号强度
nmcli dev wifi list | while read line; do
ssid=$(echo $line | awk '{print $1}')
signal=$(echo $line | awk '{print $7}')
if [[ $ssid != "" && $signal != "" ]]; then
echo "$ssid 信号强度: $signal%"
fi
done
macOS (Bash)
#!/bin/bash
# 扫描WiFi网络并显示信号强度
/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -s | awk '
NR>1 {
ssid=$1
signal=$3
printf "SSID: %-30s 信号强度: %s dBm\n", ssid, signal
}'
Python跨平台脚本
import subprocess
import re
import platform
def scan_wifi():
os_type = platform.system()
if os_type == "Windows":
cmd = "netsh wlan show networks mode=bssid"
output = subprocess.check_output(cmd, shell=True).decode('utf-8', errors='ignore')
# 解析输出
networks = {}
current_ssid = ""
for line in output.split('\n'):
ssid_match = re.search(r'SSID\s+:\s(.+)', line)
signal_match = re.search(r'信号\s*:\s*(\d+)%', line)
if ssid_match:
current_ssid = ssid_match.group(1).strip()
elif signal_match and current_ssid:
networks[current_ssid] = int(signal_match.group(1))
elif os_type == "Linux":
cmd = "nmcli -f SSID,SIGNAL dev wifi list"
output = subprocess.check_output(cmd, shell=True).decode('utf-8')
networks = {}
for line in output.split('\n')[1:]:
parts = line.split()
if len(parts) >= 2:
networks[' '.join(parts[:-1])] = int(parts[-1])
elif os_type == "Darwin": # macOS
cmd = "/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -s"
output = subprocess.check_output(cmd, shell=True).decode('utf-8')
networks = {}
for line in output.split('\n')[1:]:
parts = line.split()
if len(parts) >= 3:
ssid = parts[0]
signal = parts[2].replace('%', '')
if signal.startswith('-'):
# dBm转百分比 (粗略估算)
signal_percent = max(0, min(100, 2 * (int(signal) + 100)))
else:
signal_percent = int(signal)
networks[ssid] = signal_percent
return networks
# 使用示例
wifi_networks = scan_wifi()
print("SSID\t\t信号强度(%)")
print("-" * 40)
for ssid, signal in sorted(wifi_networks.items(), key=lambda x: x[1], reverse=True):
print(f"{ssid[:30]:30s} {signal}%")
持续监控脚本
import time
import subprocess
import platform
class WiFiMonitor:
def __init__(self, interval=5):
self.interval = interval
self.os_type = platform.system()
def get_current_signal(self):
"""获取当前连接的WiFi信号强度"""
try:
if self.os_type == "Windows":
cmd = "netsh wlan show interfaces"
output = subprocess.check_output(cmd, shell=True).decode('utf-8')
for line in output.split('\n'):
if '信号' in line and '%' in line:
return int(re.search(r'(\d+)%', line).group(1))
elif self.os_type == "Linux":
cmd = "nmcli -t -f ACTIVE,SIGNAL dev wifi"
output = subprocess.check_output(cmd, shell=True).decode('utf-8')
for line in output.split('\n'):
if line.startswith('yes:'):
return int(line.split(':')[1])
except Exception as e:
print(f"错误: {e}")
return None
def monitor(self, duration=60):
"""监控指定时间(秒)内的信号强度变化"""
print(f"开始监控WiFi信号强度 (每{self.interval}秒) - 共{duration}秒")
start_time = time.time()
while time.time() - start_time < duration:
signal = self.get_current_signal()
timestamp = time.strftime("%H:%M:%S")
if signal is not None:
bar = '█' * (signal // 5) + '░' * (20 - signal // 5)
print(f"[{timestamp}] 强度: {signal:3d}% {bar}")
else:
print(f"[{timestamp}] 未连接到WiFi")
time.sleep(self.interval)
# 使用示例
monitor = WiFiMonitor(interval=2)
monitor.monitor(duration=30)
使用说明
Windows:
- 直接运行PowerShell脚本(需要管理员权限)
- 或保存为
.ps1文件运行
Linux:
- 确保安装了NetworkManager(
nmcli) - 可能需要sudo权限
macOS:
- 直接运行bash脚本
- 不需要额外权限
Python脚本:
- 需要安装Python 3.x
- 跨平台兼容
输出示例
SSID 信号强度(%)
----------------------------------------
MyHomeWiFi 85%
Office_Guest 62%
Neighbor_Network 35%
这些脚本可以帮助你:
- 自动扫描可用WiFi网络
- 实时监控信号强度变化
- 诊断WiFi连接问题
- 选择最佳连接点
根据你的具体需求选择适合的脚本即可。