Традиционно проблемы интерактивного пароля решаются с помощью команды expect
, которая создает
промежуточный псевдо-tty для общения с процессом. Вот альтернативная версия на языке python, использующая
эквивалентный пакет python-pexpect. Создайте python-файл run.py:
import sys,pexpect
(pw,cmd) = sys.argv[1:]
child = pexpect.spawn(cmd)
child.expect(r'(?i)Password:')
child.sendline(pw)
print child.read()
и запустите его с паролем и командой для запуска в качестве параметров:
python run.py 'qwerty' 'ssh -t -o ControlPath=$SSHSOCKET ${K3_USER}@${IP} -p ${PORT} "su -c whoami && hostname"'