lance.sanchez@gmail.com
3/15/2007 9:13:00 PM
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
> > >
> > >
> >
> >
>
>