「test.rb」という Ruby ファイルがあり、Net::SCP 経由でサーバーにアップロードしました。
ファイルの内容は次のとおりです。
puts "Hello, World"
Net::SSH 経由でそのファイルを実行し、STDOUT または STDERR を取得するにはどうすればよいですか?
これは私が得ているエラーです:
Bash: Ruby not found
これは、Net::SSH がログイン シェルをロードしないためです。
私は Net::SSH::Shell から SSHkit まですべてを試し、スクリプトを実行して STDOUT を取得するという問題を解決しました。
ログイン シェルにアクセスできない場合、Net::SSH 経由でスクリプトを実行し、STDOUT または STDERR を取得するにはどうすればよいですか?
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