ruby の net ssh でコマンドをリモートで実行しようとしています。出力と終了コードが必要です。このトピックには他のスタック オーバーフロー スレッドがありますが、承認された解決策は機能しません。一部の人々は net-ssh-shell gem の使用を提案しましたが、試してみると、このパッケージが net-ssh パッケージのバージョンと競合しているというエラーが表示されました...これが私が持っているものです:
Net::SSH.start(remote_ip, username,:keys => [ssh_key_path], :verbose => :debug) do |ssh|
cmd = "blah bla"
result = ssh.exec!(cmd)
puts result
end
動作しますが、失敗しても例外は発生しません。また、チャネルを使用して終了コードを取得しようとしましたが、常に 0 が返されます。
channel.on_request("exit-status") do |ch,data|
exit_code = data.read_long
end
私を助けてください。インターネット上の間違った情報に基づいて、すでにいくつかのことを試しました。