我有這個命令創建一個工作 ssh 隧道來訪問 MySQL 伺服器:
ssh -f test@remotehost -L 127.0.0.1:3306:mysqlhost:3306 -N
在這裡,只能透過我在 .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
客戶端編寫一個包裝器,這需要您mysql
在透過 ssh 連線後啟動。