Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby ssh:发送数据后如何发送数据请求?_Ruby - Fatal编程技术网

Ruby ssh:发送数据后如何发送数据请求?

Ruby ssh:发送数据后如何发送数据请求?,ruby,Ruby,在打开到远程主机的ssh会话并通过send_data将一些数据排队后,如何真正触发将数据发送到远程主机的操作?chan.send_请求在V2.0中不起作用(例如:chan.send_请求“shell”,nil,true)。一个简单的例子将非常有用 Net::SSH.start('remotehost','user') do |session| session.open_channel do |chan| chan.send_data "..." chan.send_dat

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

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

    ???
非常感谢!
Dan

您需要启动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。在_extended_data
上)

是的,换行符附加到每个send_数据上,但它们现在都被执行了。@Dong Dan:我已经重写了我的答案,希望它能更有用一些。非常感谢Jonathan,它会导致“错误打开shell(RuntimeError)”,我们将再次调查。