From: Michael Hale Date: 2004-08-07T03:50:19+09:00 Subject: Re: I want to use ruby, but I don't think I can... help 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