浏览 376 次
|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2008-04-09
task mytask, :roles=> :myroles do
run "ls -l" //do something // ssh 到另外一台服务器,应该怎么写? end 已经通过capistrano连接到远程服务器,并进行了一些操作,但在这个task中,我需要从远程服务器再次连接到另外一台服务器上。应该怎么写? 我尝试使用了 Capistrano::SSH.connect(server(TARGET_SERVER,:target_db)) { run "echo 'cat #{MAINDUMP} | mysql --user=#{TARGET_DB_ROOT} #{TARGET_PRODDB}'" } 但始终有异常 /xanadutmp/jintao/lib/ruby-1.8.6-p111/lib/ruby/gems/1.8/gems/capistrano-2.2.0/lib/capistrano/ssh.rb:96:in `connect': undefined method `user' for [:target_db]:Array (NoMethodError) from ./config/deploy.rb:149:in `load' 有没有人有类似的需求的,是怎么处理的? 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2008-04-09
“,但在这个task中,我需要从远程服务器再次连接到另外一台服务器上。应该怎么写?”
---------- 你可以用 ssh username@host [command] 格式写在 run 里面 比如 task mytask, :roles=> :myroles do run "ls -l" //do something run "ssh user@server tail logs/my.log" end 如果你可以在本地连第二台服务器的话,可以定义两个同类role,然后给需要进行设置的那个role加一个symbole。这样维护比较轻松一些。 比如 role :db, "server1.com" role :db, "server2.com", :get_log => true task mytask, :roles => :db, :only => { :get_log => true } do run 'tail logs/my.log' end |
|
| 返回顶楼 | |
|
最后更新时间:2008-04-11
谢谢你的回复。我昨天找到了错误的原因。 两台服务器的密码是不一样的。貌似Capistrano可以做我上述提到的这种连接。但前提条件是两台服务器操作的用户名和密码必须一致。如果不一致的话,Capsitrano不会提示你输入另外一台服务器的密码。而是直接出权限错误。然后就自动退出了。
|
|
| 返回顶楼 | |
|
最后更新时间:2008-04-11
谢谢你的回复。我昨天找到了错误的原因。 两台服务器的密码是不一样的。貌似Capistrano可以做我上述提到的这种连接。但前提条件是两台服务器操作的用户名和密码必须一致。如果不一致的话,Capsitrano不会提示你输入另外一台服务器的密码。而是直接出权限错误。然后就自动退出了。
|
|
| 返回顶楼 | |


