Eu tenho este comando que cria um túnel ssh funcional para acesso ao servidor MySQL:
ssh -f test@remotehost -L 127.0.0.1:3306:mysqlhost:3306 -N
Aqui, o remotehost é acessível apenas através do jump host que configurei com a ajuda do ProxyCommand em .ssh/config:
Host somehost
Hostname jumphost-name
ForwardAgent yes
ControlPath ~/.ssh/cm-%r@%h:%p
ControlMaster auto
ControlPersist 10m
Host *.example.com
User test
StrictHostKeyChecking no
ProxyCommand ssh -X -4 test@somehost nc %h %p
Como posso fazer o mesmo usando a ferramenta expect?
Responder1
expect
é uma estrutura para processar entrada/saída de algum tipo de conexão TCP. Pode suportar ssh, claro... mas certamente não entende o protocolo mysql. A maior parte da comunicação no próprio protocolo mysql são dados binários... e a última vez que examinei expect
, ele era incapaz de analisar dados binários corretamente. Talvez seja melhor escrever um wrapper para o mysql
cliente, o que exigiria que você iniciasse mysql
após a conexão via ssh.