实用脚本能自动扫描WiFi信号强度?

wen 实用脚本 1

本文目录导读:

实用脚本能自动扫描WiFi信号强度?

  1. Windows (PowerShell)
  2. Linux (Bash)
  3. macOS (Bash)
  4. Python跨平台脚本
  5. 持续监控脚本
  6. 使用说明
  7. 输出示例

是的,可以通过脚本自动扫描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连接问题
  • 选择最佳连接点

根据你的具体需求选择适合的脚本即可。

抱歉,评论功能暂时关闭!