ruby - 如何从私有(private)远程 ip 获取文件名列表

标签 ruby linux directory net-ssh

我可以访问 ServerA 但不能访问 ServerB。我想从 ServerB 获取文件名列表通过服务器A。

我正在使用以下命令登录到 ServerA 并执行一些功能。

 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

使用 ruby​​ 2.1.2p95

还要确保你已经使用 OpenSSL 编译了 ruby​​:

ruby -ropenssl -e 'puts OpenSSL::OPENSSL_VERSION'

编辑 2

您需要的是隧道,有关更多信息,请查看 official documentation .

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!

关于ruby - 如何从私有(private)远程 ip 获取文件名列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26838490/

相关文章:

javascript - Ruby ajax js View 返回编码的 html 而不是有效的 html

Ruby on Rails : load different partial with radio buttons

python - 在 python 或 bash 循环中运行 linux cat 命令

linux - 不同发行版的脚本

android - 如何使用 Firemonkey 显示 Android 内存中的可用文件

c - 无法递归访问子文件夹

swift - 如何在swift中保存应用程序主目录sqlite文件?

ruby-on-rails - rails : How can I let my users choose a design?

ruby - 最新版本 Ruby 的键盘等效项

linux - linux中find和sed命令的错误?