Я хотел бы способ обновить мой пароль на удаленном 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
Вы можете ввести новый и старый пароли в passwd
, используя echo
, например
echo -e "oldpass\\nnewpass\\nnewpass" | passwd
(параметр -e
для echo
позволяет интерпретировать экранирование обратной косой черты, чтобы символы новой строки интерпретировались как таковые)