Я написал сценарий bash, который в какой-то момент автоматизирует установку некоторого программного обеспечения на удаленном хосте, например:
ssh user@remotehost "<path>/install-script"
Где install-script
— скрипт bash. Этот скрипт bash в какой-то момент вызывает другой скрипт bash, который в какой-то момент вызывает интерактивный скрипт python, который затем использует функцию raw_input()
python для сбора пользовательского ввода.
Когда я запускаю сценарий установки в обычном режиме (из оболочки bash), он запрашивает ввод и принимает его без проблем. Однако, когда приведенный выше фрагмент кода из моего скрипта запускается, я не получаю подсказки до тех пор, пока не введу ввод.
Единственный сценарий, который я действительно могу контролировать, — это мой сценарий автоматизации.
Я прочитал этот вопрос: «Python - как я могу прочитать стандартный ввод из оболочки и отправить стандартный вывод в оболочку и файл." Однако у меня нет проблем с запуском в обычной оболочке bash, только с помощью удаленной команды через ssh.
Можно ли решить эту проблему из моего скрипта (и если да, то как?), или мне придется изменить скрипт python?
ОБНОВЛЕНИЕ
Чтобы уточнить, подсказки ввода, о которых я говорю, — это подсказки из скрипта Python. Я не ввожу пароль для ssh (на удаленном хосте есть мой открытый ключ в файле authorized_keys
).
ОБНОВЛЕНИЕ
Для дальнейшего пояснения, мой сценарий (bash) вызывает сценарий установки (bash), который вызывает другой сценарий bash, который, наконец, вызывает сценарий python, который запрашивает ввод данных пользователем.
то есть bash -> bash -> bash -> python
elif 'are you sure you want to continue connecting' in lower:
, который является примером того, когда я возвращаю ввод в удаленную подсказку. Я использовал его в сценариях удаленной установки, требующих некоторого действия/ввода от пользователя. - person Torxed   schedule 22.01.2014