KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I would like to create a ruby script that I can run mysql commands on a remote server through a ssh tunnel. Right now I have a manual process to do this: Create a tunnel -> ssh -L 3307:127.0.0.1:3306 run ruby script. Close tunnel. I would love to be able to automate this so I can just run the script. example: 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 An update - 2010-11-10: I'm really close with this code: 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) When its sleeping, I am able to open a terminal window and connect to mysql on the remote host. This verifies the tunnel is created and working. The problem now is when I uncomment the 3 lines, it just hangs.
Tags (comma-separated)
Save Edits
Cancel