在shell中访问ruby脚本的返回值

时间:2014-01-17 22:08:58

标签: ruby shell ssh terminal

如何访问a中变量test1.rb的值,以便在test1.rb之外的SSH中进一步使用?

test1.rb

Net::SSH.start("host", ava) do |ssh|
   ssh.exec('ruby test2.rb')
end

hosttest2.rb

#!/usr/bin/env ruby

class Value
  def get_value()
    a = 1 + 2
  end
end

v = Value.new
v.get_value()

1 个答案:

答案 0 :(得分:2)

在test1.rb脚本中,您需要将一个块传递给ssh.exec方法,在该块中,您将能够从test2.rb访问puts的任何内容

Net::SSH.start("127.0.0.1", 'ava', password: '') do |ssh|
  ssh.exec('ruby test2.rb') do |channel, stream, data|
    puts "got: #{data}" if stream == :stdout
  end
end

puts要从test2.rb传递给test1.rb的值:

v = Value.new
puts v.get_value()

这会将值发送到stdout

自述文件中的更多信息:https://github.com/net-ssh/net-ssh#readme