Итак, я создал эту функцию, которая изменяет пароль пользователя UNIX, и он работает просто отлично, но я хочу зациклить список пользователей, чтобы изменить пароль каждого пользователя.Но цикл for не работает в функции. Когда я назначаю переменную для того же пользователя в списке, она работает, но не в цикле
User.txt
FakeAccount
FakeUser
Функция Python
def change_password(username, new_password):
process = pexpect.spawn("sudo passwd " + username)
process.expect("Enter new UNIX password: ")
process.sendline(new_password)
process.expect("Retype new UNIX password: ")
process.sendline(new_password)
process.close()
Для цикла
np = "test"
f = open('User.txt', 'r')
for line in f:
change_password(line.strip("\n\r"), np)
print('done')
f.close()
Я пытаюсь выполнить цикл пофайл и поместите его на место для переменной username, когда я запускаю код, ошибок нет, однако, когда я пытаюсь войти в эти учетные записи, их пароли остаются прежними, когда я запускаю скрипт python, я являюсь пользователем root, чтобыне sudo пароли.
В чем проблема, из того, что я пробовал
Я думаю, что проблема в том, что где-то в процессе зацикливанияфайл, потому что, если я запускаю этот код, он отлично работает
import pexpect
def change_password(username, new_password):
process = pexpect.spawn("sudo passwd " + username)
process.expect("Enter new UNIX password: ")
process.sendline(new_password)
process.expect("Retype new UNIX password: ")
process.sendline(new_password)
process.close()
np = "test"
U = "FakeUser"
change_password(U, np)
Это только когда я ввожу это для цикла, когда я получаю проблему, и, насколько мне известно, он захватывает то же имя пользователя, что я набрал в моем примере теста, потому чточтобы проверить, что я попытался
f = open('User.txt', 'r')
for line in f:
print("'" + line.strip("\n\r") + "'")
и получилрезультаты 'FakeAccount' и 'FakeUser', которые означают, что имена пользователей верны, возможно ли, что цикл for будет быстрым и не будет отправляться через терминал?или я что-то упустил?