[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Ruby, net-ssh, running an application on remote systems.

lance.sanchez@gmail.com

3/14/2007 8:56:00 PM

ok, I have a server with a dozen systems attached to it. there are
commands that I need to run on each system one at a time. i can
connect to each system with the admin script, i can launch basic
commands i can even launch the script i need to but when that script
tries to launch the partimage application to backup the windows
partitions (this is all being done from linux) it doesn't, i don't get
any good errors it just dies closes the connection an moves onto the
next system.

==admin.rb==
#!/usr/bin/ruby
require 'net/ssh'
Username='root'
Password='{plain_text_password}'
Hosts = (101..112).collect {|x| "192.168.0.#{x}"}
def classroom_pc(host, command)
Net::SSH.start( host, Username, Password) do |session|
session.open_channel do |channel|
channel.on_success do
puts "Connected to #{host}"
end
channel.on_close do
puts "Connection Closed to #{host}"
end
#channel.on_data do |ch, data|
# puts "\trecieved #{data}"
# puts "\tfrom #{host}"
#end

channel.send_request "shell", nil, true
channel.send_data "#{command}\n"
channel.send_data "exit\n"
end
session.loop
end
end
if $0 == __FILE__
Hosts.length.times do |i|
classroom_pc(Hosts[i], "/mnt/backup/partimage.rb
save")
end
end


==/mnt/backup/partimage.rb==
#!/usr/bin/ruby
Win_drive = "/dev/hda1"
Location = "/mnt/backup/classroom/"
File_type = "partimag.gz"
def help_message
puts "Usage:"
puts "\tsave to save the image"
puts "\tload to restore an image"
puts "\thelp prints this message"
end
def hostname
`hostname`.chomp
end
def save_image
system("rm #{Location}#{hostname}*")
system("partimage -odb -f3 -z1 save #{Win_drive} #{Location}#{hostname}.#{File_type}")
end
def load_image
system("partimage -eb -f3 restore #{Win_drive} #{Location}#{hostname}.#{File_type}.000")
end

if $0 == __FILE__
unless ARGV.length == 1
help_message
end
if ARGV.length == 1
help_message if ARGV[0].downcase == "help"
save_image if ARGV[0].downcase == "save"
load_image if ARGV[0].downcase == "load"
end
end


2 Answers

Philip Hallstrom

3/14/2007 9:50:00 PM

0

Robert Dober

3/14/2007 10:39:00 PM

0

On 3/14/07, lance.sanchez@gmail.com <lance.sanchez@gmail.com> wrote:
><snip>

Maybe you would be better off using the net/ssh shell instead of
launching a shell over the channel.
http://net-ssh.rubyforge.org/chap...

Alternatively you might use channel.exec instead of channel.request
and channel.send_data that do not seem to be the right hammer for this
nail if I recall correctly.
http://net-ssh.rubyforge.org/chap...

HTH
Robert

--
You see things; and you say Why?
But I dream things that never were; and I say Why not?
-- George Bernard Shaw