分享

Ruby Net SSH

 左目右于 2012-02-24
require 'rubygems'
require
'net/ssh'
require
'etc'

server
='localhost'

def ssh_exec!(ssh, command)
  stdout_data
=""
  stderr_data
=""
  exit_code
=nil
  exit_signal
=nil
  ssh
.open_channel do|channel|
    channel
.exec(command)do|ch, success|
     
unless success
        abort
"FAILED: couldn't execute command (ssh.channel.exec)"
     
end
      channel
.on_data do|ch,data|
        stdout_data
+=data
     
end

      channel
.on_extended_data do|ch,type,data|
        stderr_data
+=data
     
end

      channel
.on_request("exit-status")do|ch,data|
        exit_code
= data.read_long
     
end

      channel
.on_request("exit-signal")do|ch, data|
        exit_signal
= data.read_long
     
end
   
end
 
end
  ssh
.loop
 
[stdout_data, stderr_data, exit_code, exit_signal]
end

Net::SSH.start(server,Etc.getlogin)do|ssh|
  puts ssh_exec
!(ssh,"true").inspect
 
# => ["", "", 0, nil]

  puts ssh_exec
!(ssh,"false").inspect  
 
# => ["", "", 1, nil]

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多