Как обновить пароль 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. Там вы можете легко проверить свои идеи для регулярных выражений.

Другие вопросы по тегам