2016-11-22 124 views
0

我想更新保存其中一个连接的密码的wpa_supplicant.conf文件中的记录。无论整个记录是在一行中还是以不同的方式格式化,它都应该工作。所以,如果“网络”是我的网络的名称基本上是我想要做的就是采取如何使用python更新wpa_supplicant中的WIFI密码?

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

和替代

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

network" psk="new_password"} 

我知道正则表达式是一个关键,但因为我完全不熟悉我可以用一只手。

在此先感谢

回答

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。在那里你可以非常容易地检查你的想法。