Изменить пароль без какого-либо взаимодействия, но не удается выполнить команды без ошибок

Изменить пароль без какого-либо взаимодействия, но не удается выполнить команды без ошибок

При входе на мой облачный сервер я получаю следующее сообщение:

WARNING: Your password has expired.
You must change your password now and login again!
Changing password for user.
(current) UNIX password: 

Мне нужно автоматизировать процесс ввода текущего пароля, а затем ввода нового пароля.

Однако каждый раз, когда я пытаюсь выполнить команду, я получаю сообщение об ошибке WARNING: Your password has expired.\nPassword change required but no TTY available.(я подключаюсь через SSH к приложению Node.js)

Как обойти эту проблему? Можно ли как-то запустить команду без получения этой ошибки, чтобы я мог сменить пароль?

решение1

Вы можете принудительно sshвыделить tty с помощью -tswitch. Тогда, возможно, будет возможно просто передать старый и новый пароли по конвейеру. Вам нужно удвоить , -tчтобы принудительно выделить tty, даже если stdin клиента ssh не является терминалом:

echo -en 'oldpw\nnewpw\nnewpw\n' | ssh -tt somehost true

Связанный контент