Лучший способ автоматизировать этот тип входа, использует expect
или лучше pexpect
большинство серверов поставляются с Python, по крайней мере, с современным дистрибутивом.
Во- первых вы сказали , что ваша VM не установлена expect
Я не уверен, почему это важно. Есть ли причина, по которой вы не можете установить / выполнить что-либо под своей локальной учетной записью?
Следующее соображение, почему вы должны даже использовать passwd
??? Вы также можете изменить пароль, заменив хеш, указанный в /etc/shadow
. Очевидно, что вам сначала нужно правильно сгенерировать хеш, но если вы используете поддерживаемый хэш, он должен работать как положено. Теперь, как бы вы написали такое действие, это упражнение для вас.
Я также хочу упомянуть, что passwd
не читает входные данные из STDIN. Если я не ошибаюсь, это читает из tty. Так что никакое необычное сочетание просто echo
и sleep
не сработает. Однако возможно использование HEREDOC, но предполагается, что система достаточно отзывчива. Вы можете разбить его и sleep
между входами. Я только что проверил это, оно работало на моей рабочей станции Ubuntu.
#!/bin/bash
passwd root <<'EOF'
newpassword
newpassword
EOF