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
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:
: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
>
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:
: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
> >
>