2014-11-17 3 views
1

У меня есть большой скрипт, который в основном использует тот же тип кода ниже. Скрипт работает и работает, но я не получаю вывод на экран. Как получить вывод скрипта, который выполняется удаленно, чтобы отображаться на экране? Я запускаю ruby-скрипт?Получение вывода из Ruby Net :: SSH-сессии

#!/usr/bin/ruby 
# 
require 'rubygems' 
require 'net/ssh' 
require 'pty' 

if ENV['USER'] == 'root' 
    raise "You can't run this as root" 
end 

Net::SSH.start(server01, testuser) do |ssh| 
    ssh.open_channel do |channel| 
    channel.on_request "exit-status" do |channel, data| 
    $exit_status = data.read_long 
    end 
channel.on_data do |channel, data| 
data 
end 
    channel.request_pty do |channel, data| 
    channel.exec("sudo -s") 
    channel.send_data("/tmp/scripts/test.sh\n") 
    channel.send_data("exit\n") 
    end 
end 
end 
puts "DONE" 

ответ

2

изменение

channel.on_data do |channel, data| 
data 
end 

к

channel.on_data do |channel, data| 
puts data 
end 

data упоминается это ответ от сервера

и добавить

channel.send_channel_request 'shell' do |ch, success| 
    if success 
    puts 'user shell started successfully' 
    else 
    puts 'could not start user shell' 
    end 
end 
Смежные вопросы