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