Sha256: 8713d8d474e0623e36af76dc51afc787282457e015d62104a44a7edf5ac129cb

Contents?: true

Size: 1.46 KB

Versions: 5

Compression:

Stored size: 1.46 KB

Contents

class SSH
  def initialize(host, user, password)
    @ssh = Net::SSH.start(host, user, {:password => password})
    @ssh.send_global_request("[EMAIL PROTECTED]")
    @ssh_telnet = Net::SSH::Telnet.new("Session" => @ssh)
  end
  def navigate(nav_path=[])

    unless nav_path.kind_of?(Array)
      raise ArgumentError, "argument must be an array" 
    end

    data = []
    nav_path.each { |cmd|
      retry_ct = 0
      @ssh.send_global_request("[EMAIL PROTECTED]")
      puts "executing cmd: #{cmd.inspect}"
      raise ArgumentError unless cmd.has_key?(:execute)
      begin
        if cmd.has_key?(:expected_output) && cmd.has_key?(:timeout)
          out = @ssh_telnet.cmd("String" => cmd[:execute], 
                                "Match" => cmd[:expected_output], 
                                "Waittime" => cmd[:timeout])
        elsif cmd.has_key?(:expected_output)
          out = @ssh_telnet.cmd("String" => cmd[:execute], "Match" => cmd[:expected_output])
        else
          if cmd.has_key?(:timeout)
            out = @ssh_telnet.cmd("String" => cmd[:execute], "Waittime" => cmd[:timeout])
          else
            out = @ssh_telnet.cmd("String" => cmd[:execute])
          end
        end
      rescue Timeout::Error => e
        retry_ct += 1
        out = ''
        retry if retry_ct < 4
        puts "Timout::Error occured: retrying"
        retry
      end
        puts out
        data << out
    }
    
    data
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
qa_robusta-0.1.9 remote_unix/lib/ssh.rb
qa_robusta-0.1.8 remote_unix/lib/ssh.rb
qa_robusta-0.1.5 remote_unix/lib/ssh.rb
qa_robusta-0.1.4 remote_unix/lib/ssh.rb
qa_robusta-0.1.3 remote_unix/lib/ssh.rb