Yoann Guillot wrote: > 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 > > > IIRC there's a "standard" regex one uses that will match most common UNIX prompts, but I can't remember what it is. It includes "\$" and "#" and "%", but I don't remember what else there is.