M. Edward (Ed) Borasky
8/10/2006 1:19:00 PM
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.