Tengo este comando que crea un túnel ssh funcional para acceder al servidor MySQL:
ssh -f test@remotehost -L 127.0.0.1:3306:mysqlhost:3306 -N
Aquí, solo se puede acceder al host remoto a través del host de salto que configuré con la ayuda de ProxyCommand en .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
¿Cómo puedo hacer lo mismo usando la herramienta expect?
Respuesta1
expect
es un marco para procesar entradas/salidas de algún tipo de conexión TCP. Puede soportar ssh, claro... pero ciertamente no entiende el protocolo mysql. La mayor parte de la comunicación en el protocolo mysql son datos binarios... y la última vez que lo examiné expect
, fue incapaz de analizar datos binarios correctamente. Sería mejor que escribieras un contenedor para el mysql
cliente, lo que requeriría que comenzaras mysql
después de conectarte a través de ssh.