2011-07-18 70 views
0

打开ssh会话到远程主机并通过send_data排队一些数据后,如何真正触发动作发送数据到远程主机? chan.send_request在V2.0中不起作用(例如:chan.send_request“shell”,nil,true)。一个简单的例子将会非常有帮助!ssh:send_data后如何发送数据请求?

Net::SSH.start('remotehost','user') do |session| 
    session.open_channel do |chan| 
    chan.send_data "..." 
    chan.send_data "..." 

    ??? 

非常感谢! 丹

回答

0

您需要启动一个shell,你可以试试:

chan.request_pty do |ch, success| 
    raise "Error requesting pty" unless success 
    ch.send_channel_request("shell") do |ch, success| 
    raise "Error opening shell" unless success 
    end 
end 

如果你想看到你的命令,你需要注册一个处理程序的输出:

chan.on_data do |ch, data| 
    # work with output here 
end 

(或为标准错误输出使用chan.on_extended_data

+0

是,换行被附加到每个SEND_DATA,但是它们现在执行。 –

+0

@董丹:我已经重写了我的答案,希望这会更有帮助。 – Jonathan

+0

非常感谢乔纳森,它导致“错误打开壳(RuntimeError)”,将再次调查。 –