From: Lance Sanchez Date: 2007-03-16T05:06:22+09:00 Subject: Re: Ruby, net-ssh, running an application on remote systems. def classroom_pc(host, command) Net::SSH.start( host, Username, Password) do |session| shell = session.shell.sync puts "Opened Connection to #{host}" p shell.send_command( "#{command}") shell.exit puts "Closed Connection to #{host}" end end i modified the classroom_pc function, now i'm getting an error # the application runs in a curses environment. On 3/14/07, Lance Sanchez wrote: > 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 > > > > > >