无法强制'cgi'和'ssh'模块一起工作。例如,这段代码
#!/usr/bin/ruby1.9
require 'cgi'
require 'net/ssh'
cgi = CGI.new
cgi.out("status" => "302", "Connection" => "close", "Content-Length" => 1, "Location" => 'http://google.com') {' '}
2.times { |t| %x[ echo 'do something #{t}' >> /tmp/log.log ] }
%x[ echo 'before ssh' >> /tmp/log.log ]
Net::SSH.start('somehost.domain', 'someuser', :keys => [ "/tmp/id_rsa" ]) do |ssh|
ssh.exec("echo 'doing some job on remote host'; sleep 5")
end
%x[ echo 'after ssh' >> /tmp/log.log ]
在web-server下运行时产生以下输出到/ tmp / log(注意ssh-session开始后没有输出):
do something 0
do something 1
before ssh
当我从shell运行时,它完全按照我的预期执行:
do something 0
do something 1
before ssh
after ssh
这是一个错误还是我做错了什么?