Ruby Net :: SSH不会给出执行命令的结果

时间:2013-06-05 11:21:28

标签: ruby-on-rails ruby ruby-on-rails-3 net-ssh

这是我的代码

Net::SSH.start("XXX.upload.akamai.com", "sshacs", :keys=>["#{ENV['AKAMAI_SSH_KEY']}"]) do |mk|

channel = mk.open_channel do |ch|

ch.exec("rm filename.mp4") do |tk, success|

if success
    puts "++++++++++++ Deleted: #{success.class}"

else
    puts "------------ NOT deleted: #{success.class}"

end

end

end



end

success总是为True,即使我要删除的文件甚至不存在!发生了什么事?

2 个答案:

答案 0 :(得分:0)

我想删除文件你应该使用rm命令。像那样

   ch.exec("rm filename.mp4") do |tk, success|

答案 1 :(得分:0)

来自Net::SSH docs for Channel#exec

  

在这种情况下,成功意味着正在执行命令,而不是它已经完成,......

我想知道你是否因为成功发送请求而获得成功,而Net :: SSH并不关心该请求是否完整。它做了它的工作,所以它取得了成功。

将其与以下内容结合使用:on data

channel.on_data do |ch, data|
  puts "what am i really getting back: #{data.inspect}" 
end