Решение 1:
То, что я пишу здесь, является плохим хак с точки зрения безопасности. предоставляет пароль в командной строке, следовательно, она не должна быть использована в любом месте, кроме игрушек работы:
with hide('running', 'stdout', 'stderr'):
run('echo -e "%s\n%s\n" | sudo passwd %s' % (passwd, passwd, user))
PS: Это решение использует старую технику форматирования. Это не должно мешать вам использовать более новую.
Решение 2:
Passwd ожидает ввод от стандартного ввода, вы можете использовать вместо pexpect/ожидать, чтобы сделать эту работу исключительно и лучше подходит, чем выше, но не без его недостатков.
Пример программы pexpect:
child = pexpect.spawn('some command that expects password')
child.expect('Enter password:')
child.sendline('somepassword')
child.expect('Enter password:') --- passwd may ask twice
child.sendline('somepassword')
child.expect(pexpect.EOF, timeout=None)
...