Изменить пароль пользователя из скрипта python, работающего от имени пользователя - PullRequest
0 голосов
/ 26 февраля 2020

В настоящее время я работаю над сценарием Python на виртуальной машине CentOs 8, я пытаюсь написать часть моего сценария python, который установит для них пароль пользователя без взаимодействия с пользователем. Я еще не нашел способ сделать это и пробовал различные методы, такие как:

subprocess.run(str('echo -e "password\npassword\npassword\n" | sudo -S passwd --stdin user'), shell=True, universal_newlines=True, check=True)

Но безрезультатно.

Я знаю, что это небезопасно (даже если это сработало), но в этом случае это действительно не имеет значения, поэтому, кроме безопасности, мне просто нужно заставить ее работать. Пароли - это просто примеры, показывающие код, поскольку я знаю, что он будет отклонен, если он будет использоваться в качестве фактических паролей.

Есть ли способ заставить скрипт запускаться от имени пользователя root вместо зарегистрированного -in user?

Делать то же самое, что и root пользователь, работает так:

subprocess.run(str('echo -e "password\npassword" | passwd --stdin ' + userName), shell=True, universal_newlines=True, check=True)

только когда я добавляю часть sudo, я не могу автоматически вставить пароль sudo

Если я делаю это прямо из терминала, это работает:

echo -e "password\npassword\npassowrd" | sudo -S passwd --stdin dave

Ответы [ 2 ]

0 голосов
/ 26 февраля 2020

Попробуйте использовать subprocess.Popen(command, 0, None, None, shell=True), как показано ниже:

def launchCommand(command):
    proc = subprocess.Popen(command,0,None,None, shell=True)
    proc.poll()
    proc.wait()
    ret = proc.returncode
    return ret

command = str('echo -e "password\npassword\npassword\n" | sudo -S passwd --stdin user')
print(launchCommand(command))
0 голосов
/ 26 февраля 2020

Попробуйте и посмотрите эту связанную тему .

Option-1

username = 'dave'
sudoPassword = 'mypass'
command = 'passwd --stdin ' + username
p = os.system('echo -e "password\npassword\npassowrd" %s|sudo -S %s' % (sudoPassword, command))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...