From: Yoann Guillot Date: 2006-08-10T19:53:27+09:00 Subject: Re: net/telnet On Thu, Aug 10, 2006 at 06:35:05PM +0900, pedro.baldanta@gmail.com wrote: > Hi all: > > I was unable to start "su -" after open telnet conexion. I got: > > :-================ Timeout::Error ===================== > C:\ruby\lib\ruby\1.8/net/telnet.rb:551:in `waitfor' > raise TimeoutError, "timed out while waiting for more > data" > C:\ruby\lib\ruby\1.8/net/telnet.rb:680:in `cmd' > waitfor({"Prompt" => match, "Timeout" => time_out}) > C:\Documents and Settings\admin\Escritorio\telne_test.rb:12 > localhost.cmd("su -") > C:\ruby\lib\ruby\site_ruby\1.8/rubygems/custom_require.rb:27:in > `require' > gem_original_require path > > ============================================= > Exception: timed out while waiting for more data > > > Any idea? > > Telnet uses a regex to match the shell prompt, so that it knows that the preceding command has terminated. When you 'su -', you change the prompt (probably a $ becomes a #, or your login changes), so Telnet never sees the end of the 'su -' command. You should change the regex used to match the prompt when you create the Net::Telnet object, so that it matches both your normal prompt and the root prompt, i.e conn = Net::Telnet.new('Host' => 'bla', 'Prompt' => /me@host\$|root@host#/) Yoann