Это ни безопасная идея, ни одна, которую я бы порекомендовал в другом месте, но у меня есть ситуация, когда иногда требуется время, чтобы моя специальная команда Ansible ответила. Я бы с удовольствием передал или аргументы, или что-то еще, что нужно, чтобы вставить нужный текст в подсказку, чтобы я мог уйти и знать, что это закончится.

Пример:

$ ansible all -m shell -a "reboot" --ask-pass
Password:
blah blah blah it worked

Я хотел бы отправить аргумент или << или что-то, чтобы получить пароль. Это возможно?

2 ответа2

1

Вы можете использовать Expect для таких задач.

Вот отправная точка:

spawn ansible all -m shell -a "reboot" --ask-pass
expect "Password:"
send "secret\r"
expect eof # from this point it depends on the behavior of Ansible...

Сохраните этот фрагмент в файл, скажем reboot-ansimble.sh , затем запустите его с:

expect reboot-ansimble.sh

PS: Если Expect не установлен, вы сможете получить его из репозиториев по умолчанию:

sudo apt-get install expect
0

Могу ли я предложить перейти к аутентификации на основе ключей? https://www.digitalocean.com/community/tutorials/how-to-configure-ssh-key-based-authentication-on-a-linux-server

Аутентификация на основе ключей позволяет входить на сервер без пароля и является гораздо более безопасной, чем пароли. У меня есть роль в Ansible Galaxy для управления пользователями и ключами здесь: https://galaxy.ansible.com/list#/roles/4840

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .