Ruby 如何从专用远程ip获取文件名列表

Ruby 如何从专用远程ip获取文件名列表,ruby,linux,directory,net-ssh,Ruby,Linux,Directory,Net Ssh,我有权访问服务器A,但无权访问服务器B。我想通过服务器A从服务器B获取文件名列表 我正在使用以下命令登录到服务器A并执行一些功能 Net::SSH.start(url, user, forward_agent: true) do |ssh| ssh.exec('scp -r source dest') end 但是我想通过ServerA从ServerB获取文件名列表。我怎么做 Eg: Dir["/path/*.txt"] or ls *.txt OS: Linux Language

我有权访问服务器A,但无权访问服务器B。我想通过服务器A从服务器B获取文件名列表

我正在使用以下命令登录到服务器A并执行一些功能

 Net::SSH.start(url, user, forward_agent: true) do |ssh|

  ssh.exec('scp -r source dest')
 end
但是我想通过ServerAServerB获取文件名列表。我怎么做

Eg: Dir["/path/*.txt"] or ls *.txt

OS: Linux
Language: ruby

您可以使用ssh执行远程命令:

ssh username@hostname ls -l /foo/bar
如果
ls
命令不够,您可以始终使用
find
或任何其他命令

编辑

这里有一个完整的工作脚本

require 'net/ssh'

Net::SSH.start('localhost', 'user', :password => "password") do |ssh|

  stdout = ''
  ssh.exec!("ls -l /tmp") do |channel, stream, data|
    stdout << data if stream == :stdout
  end
  puts stdout
end
编辑2

您需要的是一条隧道,有关更多信息,请查看


如果我执行上述命令。我得到的结果是空的。我不知道为什么。我只想获取文件名。我正在Net::SSH.start循环中执行命令。@karan我已经用一个工作示例更新了答案。我正在使用Net::SSH.start(ServerA,user,forward\u agent:true)登录ServerA我没有从本地系统直接访问SERVERB的权限。我需要通过SERVERA登录到SERVERB。@karan另一个带有隧道信息的编辑,应该可以解决您的问题。Paulo Fidalgo-使用网关,它可以工作。非常感谢。
ruby -ropenssl -e 'puts OpenSSL::OPENSSL_VERSION'
require 'net/ssh/gateway'

gateway = Net::SSH::Gateway.new('host', 'user')

gateway.ssh("host.private", "user") do |ssh|
  puts ssh.exec!("hostname")
end

gateway.open("host.private", 80) do |port|
  Net::HTTP.get_print("127.0.0.1", "/path", port)
end

gateway.shutdown!