From: Lance Sanchez Date: 2007-03-15T11:02:14+09:00 Subject: Re: Ruby, net-ssh, running an application on remote systems. sorry about that, I was implementing the shell and a responce, mozilla crashed and google talk sent a blank message. the app i'm running seems to be using ncurses, will that cause another problem? On 3/14/07, lance.sanchez@gmail.com wrote: > 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 > >