Thanks for all the replies and suggestions. They were very
encouraging. Here is my code:
require "net/telnet"
def telnet_session(host_name, user, password, reboot=false)
puts ""
puts "****************************\\/"
puts "started session #{host_name}\\/"
puts "****************************\\/"
puts ""
host = Net::Telnet::new("Host" => host_name,
"Output_log" => "output_log",
"Timeout" => 300)
host.login("LoginPrompt" => /Username[: ]*\z/n,
"Name" => user,
"Password" => password) {|c| print c }
begin
yield(host) if block_given?
ensure
begin
if(reboot)
host.cmd("String" => "reboot", "Prompt" => "")
else
#this should be smart enough to exit all the way out.
host.cmd("String" => "exit", "Prompt" => "")
end
rescue Exception => e
p e, 'Unable to exit/reboot.'
ensure
host.close
# for some reason the telnet library on windows
# needs some time to reset itself before I create another conneciton.
sleep 1
puts ""
puts "****************************/\\"
puts "ended session #{host_name} /\\"
puts "****************************/\\"
puts ""
end
end
end
debugLogIn = "debug"
debugPassword = "passwd"
ip = "192.168.2.54"
telnet_session(ip, debugLogIn, debugPassword) {|host|
host.cmd("con t") {|c| print c }
sleep 1
host.cmd("int m") {|c| print c }
sleep 1
host.cmd("exit") {|c| print c }
sleep 1
host.cmd("exit") {|c| print c }
}
Which gives me the following... all at once. Not in 1 second
increments as I would have hoped.
***********************************\/
started session 192.168.2.54 \/
***********************************\/
User Access Verification
Username: debug
Password:
debug> con t
config> int m
config-ifMan> exit
config> exit
debug>
***********************************/\
ended session 192.168.2.54 /\
***********************************/\
I too figured it was an issue with ruby win32 and sockets, so I tried
applying Jean's patch to my cvs version of ruby, but it still waits
until I close the socket before printing the output.
> This *could* be an issue with sockets and blocking. Jean-Francois
> Nadeau posted a rather large patch for Win32 and sockets, though I
> don't know whether it will make it into 1.8.2.
>
> http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/3154
>
> I'm not sure if that's the issue or not, though. As others have
> suggested, please post some code snippets to help us help you.
>
> Regards,
>
> Dan