//更新:当输入 mysql 密码时,-ppassword 有效。-p 密码不起作用。问题解决了。//
我们的工作服务器上有数百个数据库,我想编写一个 ruby 脚本,自动在我的本地机器上创建它们的重复版本以用于开发目的。
我一直在尝试使用 net-ssh 创建隧道,但是(主机、用户、通行证等由于显而易见的原因被审查):
require 'net/ssh'
HOST = 'xxx'
USER = 'yyy'
PASS = 'ppp'
Net::SSH.start( HOST, USER, :password => PASS ) do|ssh|
puts "inside ssh tunnel"
puts ssh.exec!('ruby -v')
puts ssh.exec!('mysql -u zzz -p pswrd -h c3 will_il_raw -e "select * from deeds limit 1"')
end
结果输出:
inside ssh tunnel
ruby 1.8.7 (2010-08-16 patchlevel 302) [x86_64-linux]
随后是无限期挂起。有趣的是,如果我通过控制台 ssh 进入同一台计算机,“ruby -v”会返回 1.9.3。如果我在那里输入那个 mysql 查询,它会成功返回命名表的一行。
我认为解决方案与端口转发有关,但在这里我有限的知识开始让我彻底失望。
运行 mysql 服务器的机器与我访问它的机器不同,而这又不是我实际坐的机器。我需要把这些点联系起来,显然不知道如何正确地解决这个问题。
任何提示将不胜感激。