Измените пароль UNIX из командной строки по Python/матрице

Я хотел бы способ обновить мой пароль на удаленном Ubuntu 10.4 поле с матрицей.

Я ожидал бы мой fabfile.py выглядел бы примерно так:

def update_password(old_pw, new_pw):
    # Connects over ssh with a public key authentication
    run("some_passwd_cmd --old %s --new %s" % (old_pw, new_pd))

К сожалению, единственная команда, которую я знаю этого, позволяет одному изменению, которое пароль passwd, и на Ubuntu 10.4, кажется, нет никакого способа передать в новом (или старый) пароль как аргумент passwd.

Через что команда могла одно использование для изменения пароля пользователя на Ubuntu 10.4 fabric?

Править: Я взглянул на usermod -p, и это может работать, но это не рекомендуется страницей справочника.

Править: По некоторым причинам usermod -p не работал ни один по матрице.

Также, я попробовал (несколько небезопасную) вариацию на ответ mikej, который действительно решал проблему:

# connecting & running as root.
from fabric.api import *
from fabric.contrib import files

files.append("%s\n%s" % (passwd, passwd), '.pw.tmp')
# .pw.tmp:
# PASSWD
# PASSWD

run("passwd %s < .pw.tmp" % user)

run("rm .pw.tmp")

Это не очень изящное решение, но это работает.

Спасибо за чтение.

Brian

8
задан Brian M. Hunt 20 June 2010 в 15:05
поделиться

1 ответ

Вы можете ввести новый и старый пароли в passwd , используя echo , например

echo -e "oldpass\\nnewpass\\nnewpass" | passwd

(параметр -e для echo позволяет интерпретировать экранирование обратной косой черты, чтобы символы новой строки интерпретировались как таковые)

14
ответ дан 3 November 2019 в 13:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: