小编use*_*023的帖子

如何在ruby中创建ssh隧道,然后连接到远程主机上的mysql服务器

我想创建一个ruby脚本,我可以通过ssh隧道在远程服务器上运行mysql命令.

现在我有一个手动过程来执行此操作:

  1. 创建一个隧道 - > ssh -L 3307:127.0.0.1:3306
  2. 运行ruby脚本.
  3. 关闭隧道.

我希望能够自动化这个,所以我可以运行脚本.

例:

require 'rubygems'   
require 'net/ssh/gateway'  
require 'mysql'  


#make the ssh connection -> I don't think I am doing this right.

Net::SSH.start('server','user') do |session|

  session.forward.local(3307,'127.0.0.1', 3306)<br>
  mysql = Mysql.connect("127.0.0.1","root","","",3307)

  dbs = mysql.list_dbs<br>
  dbs.each do |db|<br>
    puts db <br>
  end

  session.loop(0){true}<br>
end
Run Code Online (Sandbox Code Playgroud)

更新 - 2010-11-10:
我真的很接近这个代码:

require 'rubygems'  
require 'mysql'  
require 'net/ssh/gateway'  

gateway = Net::SSH::Gateway.new("host","user",{:verbose => :debug})
port = gateway.open("127.0.0.1",3306,3307)

#  mysql = Mysql.connect("127.0.0.1","user","password","mysql",3307)  
#  puts "here"  
#  mysql.close  

sleep(10)  
gateway.close(port) …
Run Code Online (Sandbox Code Playgroud)

ruby mysql ssh

28
推荐指数
2
解决办法
2万
查看次数

标签 统计

mysql ×1

ruby ×1

ssh ×1