我试图使用Net :: SSH连接到服务器,该服务器在 登录后立即执行需要用户输入的脚本。用户必须输入“1”或“2”,之后将通过终端接收一些数据。在使用ruby和Net :: SSH的第一个命令之前响应SSH提示
我的问题是,虽然我能够连接,但我找不到一种方法向服务器发送“1 \ n”并接收输出。
以下代码在“INFO - net.ssh.connection.session [80906b74]:channel_open_confirmation:0 0 0 32768”处停止。
使用channel.exec(“1 \ n”)而不是channel.send_data不出所料也不起作用。
Net::SSH.start('host', 'user', :password => "pass", :auth_methods => ["password"], :verbose => :debug) do |session|
session.open_channel do |channel|
channel.on_data do |ch, data|
STDOUT.print data
end
channel.send_data("1\n")
end
session.loop
end
任何想法,任何人?
在此先感谢
我实际上已经尝试过使用channel.request_pty,请求成功,但数据既没有被发送也没有被接收(使用channel.send_data) – Molotoff 2010-02-08 17:45:17
如何验证我是否从远程服务器获得提示? – Molotoff 2010-02-08 17:48:53
在您的'channel.on_data do | ch,data | ...结束“块,变量”data“将保存从服务器发送给您的数据。在该块内部,将它放到控制台/日志文件中,并以可视方式进行检查。一旦你看到了服务器的提示符的格式,你可以编写代码来解析它。你可能会尝试像'puts'这样的数据:#{data.inspect}“'。 – bta 2010-02-09 16:54:48