首页 文章

如何使用python更新wpa_supplicant中的WIFI密码?

提问于
浏览
0

我想更新wpa_supplicant.conf文件中的记录,其中保存了其中一个连接的passoword . 无论整个记录是仅位于一行还是以不同方式格式化,它都应该起作用 . 所以,如果“网络”是我网络的名称,基本上我想做的就是拿

network={ ssid="network" psk="password" }

替代

network" (...whatever...) }

network" psk="new_password"}

我知道正则表达式是关键,但由于我完全不熟悉,我可以用一只手 .

提前致谢

1 回答

  • 0

    你可以使用一个没有正则表达式的解决方案 . 特别是对于编程新手来说,正则表达式可能真的很糟糕 .

    没有正则表达式的可能解决方案是:

    def set_new_password(password):
        with open('/etc/wpa_supplicant/wpa_supplicant.conf','r') as f:
                in_file = f.readlines()
                f.close()
    
        out_file = []
        for line in in_file:
                if line.startswith("psk"):
                        line = 'psk='+'"'+password+'"'+'\n'
                out_file.append(line)
    
        with open('/etc/wpa_supplicant/wpa_supplicant.conf','w') as f:
                for line in out_file:
                        f.write(line)
    

    这是另一个正则表达式解决方案 . 它不是一个非常优雅的正则表达式,但也许有一个简单的例子,你可以遵循它的含义:

    def set_new_password(password):
        with open('/etc/wpa_supplicant/wpa_supplicant.conf','r') as f:
                in_file = f.read()
                f.close()
    
        out_file =  re.sub(r'psk=".*"','psk='+'"'+password+'"',in_file)
    
        with open('/etc/wpa_supplicant/wpa_supplicant.conf','w') as f:
                f.write(out_file)
                f.close()
    

    你应该看看Regex101 . 在那里,您可以非常轻松地查看正则表达式的想法 .

相关问题