Tradicionalmente, os problemas de senha interativa são resolvidos usando o comando expect
, que cria
um intermediário pseudo-tty para falar com o processo. Aqui está uma versão alternativa do python usando o
pacote python-pexpect equivalente. Crie um arquivo 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()
e execute-o com a senha e o comando para executar como parâmetros:
python run.py 'qwerty' 'ssh -t -o ControlPath=$SSHSOCKET ${K3_USER}@${IP} -p ${PORT} "su -c whoami && hostname"'