Ich habe diesen Befehl, der einen funktionierenden SSH-Tunnel für den Zugriff auf den MySQL-Server erstellt:
ssh -f test@remotehost -L 127.0.0.1:3306:mysqlhost:3306 -N
Hier ist der Remotehost nur über den Jump-Host erreichbar, den ich mit Hilfe von ProxyCommand in .ssh/config konfiguriert habe:
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
Wie kann ich dasselbe mit dem Expect-Tool tun?
Antwort1
expect
ist ein Framework zur Verarbeitung von Eingabe/Ausgabe aus einer Art TCP-Verbindung. Es unterstützt zwar SSH, versteht aber definitiv nicht das MySQL-Protokoll. Der Großteil der Kommunikation im MySQL-Protokoll selbst besteht aus Binärdaten, und als ich es das letzte Mal untersucht habe expect
, konnte es Binärdaten nicht richtig analysieren. Sie sollten besser einen Wrapper für den Client schreiben , den Sie nach der Verbindung über SSH mysql
starten müssen .mysql