Как обновить пароль WIFI в wpa_supplicant с помощью python?
Я хочу обновить запись в файле wpa_supplicant.conf, где сохраняется пароль для одного из подключений. Он должен работать независимо от того, находится ли вся запись в одной строке или отформатирована по-другому. Так что, если "сеть" - это имя моей сети, то в основном я хочу взять
network={
ssid="network"
psk="password"
}
и заменить
network" (...whatever...) }
с
network" psk="new_password"}
Я знаю, что регулярное выражение является ключом к этому, но, поскольку я совершенно не знаком с этим, я мог бы использовать руку.
заранее спасибо
1 ответ
Вы можете просто использовать решение без регулярных выражений. Специально для новичков в программировании, регулярное выражение может быть действительно задирой.
Возможное решение без регулярного выражения будет:
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. Там вы можете легко проверить свои идеи для регулярных выражений.