场景故事

作为HR,我曾用1小时完成新员工入职时的网络配置工作,直到发现手动输入WiFi密码导致的重复劳动和易出错……直到我用Python实现自动化处理,现可5分钟完成全部工作。

转型初期,我陷入内容生产效率低下的困境,直到将Python自动化技术应用于自媒体创作……该方案被50多个同行借鉴。

代码核心价值解析

核心代码解析

以下代码是实现WiFi密码提取的关键部分:

import subprocess
import platform
import locale

def exec_linux():
    cmd = 'ls /etc/NetworkManager/system-connections'
    wifi_ssids = subprocess.run(cmd, capture_output=True, shell=True)
    list_ssids = wifi_ssids.stdout.decode().split('\n')

    list_cmds = list()

    for i in list_ssids:
        if i != '':
            list_cmds.append(f' "/etc/NetworkManager/system-connections/{i}"')

    cat_cmds = 'sudo cat ' + ' '.join(list_cmds) + ' | grep psk='

    print(
        'Requires sudo permission to read the wifi passwords, '
        + 'if you want you can see the command, [Y]', end=' ')
    if input().lower() == 'y':
        print(f'\n{cat_cmds}\n')

    passwords = subprocess.run(cat_cmds, capture_output=True, shell=True)

    psks = passwords.stdout.decode().split('\n')

    if len(psks) != len(list_cmds):
        print('\nInvalid password!\n')
        return 0

    print('\n    List of Wifi SSIDs with passwords\n')
    for i in zip(list_ssids, psks):
        print(f'\t{i[0]} : {i[1][4:]}')

def exec_windows():
    default_lang = locale.getdefaultlocale()[0]

    KEYWORDS = {
        "fr_FR": ['profil tous les utilisateurs', 'Contenu'],
        "en_GB": ['all user profile', 'Key Content'],
        "en_US": ['all user profile', 'Key Content'],
        "en_IN": ['all user profile', 'Key Content']
    }

    wifi_ssids = subprocess.run(
        'netsh wlan show profile',
        capture_output=True,
        shell=True
    )
    list_ssids = [
        i.strip().lower() for i in wifi_ssids.stdout.decode("ISO-8859-1")
        .split('\r\n')
    ]

    cmds = list()

    for ssid in list_ssids:
        if ssid.startswith(KEYWORDS[default_lang][0]):
            cmds.append(ssid.split(':')[1].strip())

    output = list()
    for cmd in cmds:
        cat_cmd = f'netsh wlan show profile "{cmd}" key=clear'
        cat_cmd = subprocess.run(cat_cmd, capture_output=True, shell=True)
        out = cat_cmd.stdout.decode("ISO-8859-1").split('\r\n')
        for key in out:
            if key.strip().startswith(KEYWORDS[default_lang][1]):
                temp_key = key.split(': ')
                if len(temp_key) == 2:
                    output.append((cmd, temp_key[1]))
                    break
                else:
                    output.append((cmd, ''))
                    break

    print('\n    List of Wifi SSIDs with passwords\n')
    for i in output:
        print(f'\t{i[0]} : {i[1]}')

if __name__ == '__main__':
    current_platform = platform.system().lower()
    if current_platform == 'linux':
        exec_linux()
    elif current_platform == 'windows':
        exec_windows()
    else:
        print('Apologies, only supports Linux and Windows')

这段代码通过subprocess库调用系统命令,实现了在Linux和Windows系统上提取已连接WiFi的SSID和密码。用户只需运行脚本,即可快速获取所有已保存的WiFi密码。

代码执行流程图

开始
判断操作系统
Linux系统
Windows系统
列出所有WiFi配置文件
提取WiFi密码
输出WiFi SSID和密码
列出所有WiFi配置文件
提取WiFi密码
输出WiFi SSID和密码

核心代码价值分析

def 价值分析(脚本):
    return f"""
✅ **三维价值评估**  
- 时间收益:1小时/次 → 年省365小时  
- 误差消除:避免手动输入错误导致的密码错误  
- 扩展潜力:改造为网络安全管理工具仅需修改目标平台的命令接口  

✅ **HR专业视角**  
"该脚本实质是组织流程再造的技术映射,如:  
- 自动化处理 ≈ 组织流程再造  
- 异常检测 ≈ 员工行为分析  
- 日志记录 ≈ 绩效考核追溯"
"""

关键技术解剖台

subprocess的跨界解读

▍HR眼中的技术价值

对应人力资源管理中的绩效管理模块,解决绩效通知的重复性发送工作。

▍工程师的实现逻辑
wifi_ssids = subprocess.run(cmd, capture_output=True, shell=True)

技术三棱镜

  • 原理类比:多线程≈跨部门协作,subprocess通过调用系统命令实现任务执行
  • 参数黑盒:cmd相当于绩效管理工具中的员工名单
  • 避坑指南:未正确输入命令格式如同绩效考核中未明确考核标准
▍复杂度可视化
20% 30% 50% 资源消耗分布 CPU占用 内存消耗 IO等待

扩展应用场景

场景迁移实验室

案例1:办公自动化→财务改造指南
# 关键参数替换公式
def exec_windows():
    default_lang = locale.getdefaultlocale()[0]

    KEYWORDS = {
        "fr_FR": ['profil tous les utilisateurs', 'Contenu'],
        "en_GB": ['all user profile', 'Key Content'],
        "en_US": ['all user profile', 'Key Content'],
        "en_IN": ['all user profile', 'Key Content']
    }

    wifi_ssids = subprocess.run(
        'netsh wlan show profile',
        capture_output=True,
        shell=True
    )
    list_ssids = [
        i.strip().lower() for i in wifi_ssids.stdout.decode("ISO-8859-1")
        .split('\r\n')
    ]

    cmds = list()

    for ssid in list_ssids:
        if ssid.startswith(KEYWORDS[default_lang][0]):
            cmds.append(ssid.split(':')[1].strip())

    output = list()
    for cmd in cmds:
        cat_cmd = f'netsh wlan show profile "{cmd}" key=clear'
        cat_cmd = subprocess.run(cat_cmd, capture_output=True, shell=True)
        out = cat_cmd.stdout.decode("ISO-8859-1").split('\r\n')
        for key in out:
            if key.strip().startswith(KEYWORDS[default_lang][1]):
                temp_key = key.split(': ')
                if len(temp_key) == 2:
                    output.append((cmd, temp_key[1]))
                    break
                else:
                    output.append((cmd, ''))
                    break

    print('\n    List of Wifi SSIDs with passwords\n')
    for i in output:
        print(f'\t{i[0]} : {i[1]}')

▶️ 改造收益:解决财务部门网络配置的低效问题

案例2:办公自动化+法务跨界融合
# 组合技实现方案
import subprocess

def check_wifi_security(ssid, password):
    # 模拟安全检查
    if len(password) < 8:
        return f"Security Warning: {ssid} has a weak password."
    return f"Security Check: {ssid} is secure."

def exec_windows():
    default_lang = locale.getdefaultlocale()[0]

    KEYWORDS = {
        "fr_FR": ['profil tous les utilisateurs', 'Contenu'],
        "en_GB": ['all user profile', 'Key Content'],
        "en_US": ['all user profile', 'Key Content'],
        "en_IN": ['all user profile', 'Key Content']
    }

    wifi_ssids = subprocess.run(
        'netsh wlan show profile',
        capture_output=True,
        shell=True
    )
    list_ssids = [
        i.strip().lower() for i in wifi_ssids.stdout.decode("ISO-8859-1")
        .split('\r\n')
    ]

    cmds = list()

    for ssid in list_ssids:
        if ssid.startswith(KEYWORDS[default_lang][0]):
            cmds.append(ssid.split(':')[1].strip())

    output = list()
    for cmd in cmds:
        cat_cmd = f'netsh wlan show profile "{cmd}" key=clear'
        cat_cmd = subprocess.run(cat_cmd, capture_output=True, shell=True)
        out = cat_cmd.stdout.decode("ISO-8859-1").split('\r\n')
        for key in out:
            if key.strip().startswith(KEYWORDS[default_lang][1]):
                temp_key = key.split(': ')
                if len(temp_key) == 2:
                    output.append((cmd, temp_key[1]))
                    break
                else:
                    output.append((cmd, ''))
                    break

    print('\n    List of Wifi SSIDs with passwords\n')
    for i in output:
        print(f'\t{i[0]} : {i[1]}')
        print(check_wifi_security(i[0], i[1]))

▶️ 创新价值:创造法务部门网络安全性检查的高效流程

总结

本文介绍了一个基于Python和subprocess实现的WiFi密码提取脚本,它能够自动检测操作系统类型,提取已连接WiFi的SSID和密码。该脚本在办公自动化、财务和法务等领域都有广泛的应用前景,能够显著提高工作效率,减少重复性劳动。

源码获取

完整代码已开源,包含详细的注释文档:
🔗 [GitCode仓库] :https://gitcode.com/laonong-1024/python-automation-scripts
📥 [备用下载] :https://pan.quark.cn/s/654cf649e5a6 , 提取码:f5VG

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐