def classroom_pc( host, command ) Net::SSH.start( host, Username, Password) do |session| shell = session.shell.sync puts "Opened Connection to #{host}" shell.send_command( "export TERM=linux" ) p shell.send_command( "#{command}") shell.exit puts "Closed Connection to #{host}" end end that seems to have done it, it doesnt display the ncurses info but i can live with that for now. On 3/15/07, Lance Sanchez <lance.sanchez / gmail.com> wrote: > 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 > #<struct Net::SSH::Service::Shell::SyncShell::CommandOutput stdout="", > stderr="Failed to open terminal.TERM environment variable needs > set.\r\n", status=0> > the application runs in a curses environment. > > On 3/14/07, Lance Sanchez <lance.sanchez / gmail.com> 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 <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 > > > > > > > > > > > >