Difference between revisions of "Working with SSH and Ruby"

From PeformIQ Upgrade
Jump to navigation Jump to search
Line 66: Line 66:
     end
     end
}
}
</pre>
==Three==
<pre>
#!/usr/bin/env ruby
require 'rubygems'
require 'net/ssh'
HOST = '192.168.1.113'
USER = 'username'
PASS = 'password'
Net::SSH.start( HOST, USER, :password => PASS ) do|ssh|
    result = ssh.exec!('ls')
    puts result
end
</pre>
</pre>




[[Category:Ruby]]
[[Category:Ruby]]

Revision as of 13:44, 30 July 2012

Links



Examples

One

require 'net/ssh/multi'

  Net::SSH::Multi.start do |session|
    # access servers via a gateway
    session.via 'gateway', 'gateway-user'

    # define the servers we want to use
    session.use 'user1@host1'
    session.use 'user2@host2'

    # define servers in groups for more granular access
    session.group :app do
      session.use 'user@app1'
      session.use 'user@app2'
    end

    # execute commands on all servers
    session.exec "uptime"

    # execute commands on a subset of servers
    session.with(:app).exec "hostname"

    # run the aggregated event loop
    session.loop
  end

Two

require 'rubygems'
require 'net/ssh'

username  = "yourusername"
hostnames = ["node01","node02"]
script    = "date;uptime;"

hostnames.each {|hostname|
    Net::SSH.start( hostname, username ) do |session|
        session.open_channel do |channel|
            channel.on_data { |chan,output|
                puts "#{output.inspect}"
            }
            channel.on_extended_data { |chan, type, output|
                print output
            }
            channel.exec script
         end

         session.loop
     end
}

Three

#!/usr/bin/env ruby
require 'rubygems'
require 'net/ssh'
 
HOST = '192.168.1.113'
USER = 'username'
PASS = 'password'
 
Net::SSH.start( HOST, USER, :password => PASS ) do|ssh|
    result = ssh.exec!('ls')
    puts result
end