我有一个名为“test.rb”的 Ruby 文件,我通过 Net::SCP 将它上传到服务器。
该文件的内容是:
puts "Hello, World"
如何通过 Net::SSH 执行该文件并获取 STDOUT 或 STDERR?
这是我得到的错误:
Bash: Ruby not found
那是因为 Net::SSH 不会加载登录 shell。
我已经尝试了从 Net::SSH::Shell 到 SSHkit 和 rye 的所有方法来解决执行脚本和获取任何 STDOUT 的问题。
当我无法访问登录 shell 并获得任何 STDOUT 或 STDERR 时,如何通过 Net::SSH 执行脚本?
我正在使用 Ruby-2.1.0。
command = "ruby -e'print :hello'"
Net::SSH.start(server_connection.host, server_connection.ssh_username, port: server_connection.ssh_port, paranoid: false) do |ssh|
job.stdout = ""
job.stderr = ""
ssh.exec! command do |channel, stream, data|
job.stdout << data if stream == :stdout
job.stderr << data if stream == :stderr
end
ssh.close
end