
MySQL サーバーにアクセスするための機能する SSH トンネルを作成する次のコマンドがあります。
ssh -f test@remotehost -L 127.0.0.1:3306:mysqlhost:3306 -N
ここで、remotehost は、.ssh/config の ProxyCommand を使用して設定したジャンプ ホスト経由でのみアクセスできます。
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
expect ツールを使用して同じことを行うにはどうすればよいでしょうか?
答え1
expect
は、ある種の TCP 接続からの入出力を処理するためのフレームワークです。確かに ssh をサポートできますが、mysql プロトコルを理解しているわけではありません。mysql プロトコル自体の通信のほとんどはバイナリ データです。最後に調べたところexpect
、バイナリ データを適切に解析できませんでした。クライアントへのラッパーを記述した方がよいかもしれません。mysql
その場合、ssh 経由で接続した後に起動する必要がありますmysql
。