Re: libssh and screen prompts
- Subject: Re: libssh and screen prompts
- From: Norbert Kiesel <nkiesel@xxxxxxxxxxxxxxx>
- Reply-to: libssh@xxxxxxxxxx
- Date: Tue, 08 Dec 2009 07:22:24 -0800
- To: libssh@xxxxxxxxxx
On Tue, 2009-12-08 at 09:34 -0500, Barbara Knysz wrote:
> I have created a test program that sends a command, and then recieves
> the output.
> However, I also need to examine the screen prompt to identify aspects
> of work flow, such as then dynamic discovery of the the necessity of
> an 'enable' password..
> Does libssh handle this?
No it does not. What it does is giving you a channel (actually 2, but
you can ignore the stderr for your purposes I think) to read/write to
the other end. From the "enable" password comment above I assume the
endpoint you are talking to is something like an IOS router. You have
to do the following:
1) figure out how to know that the endpoint is done talking to you.
This is either done by just continue to read until the endpoint no
longer sends anything (obviously you need a poll or read with timeout
here), or by looking at what the endpoint sent back and searching for
the prompt. The second solution is generally faster but can be tricky,
especially if the endpoint allows to change the prompt and you have no
control over it.
2) Either know what state you end in after login (i.e. unprivileged or
privileged mode), or analyse what the endpoint sent back. Then either
send (or not) the string "enable", wait (using one of the 2 solution
from (1) for the password promp)t, then send the password, then wait for
the enable prompt.
I did something like this in the past (sorry can't share the code) and
coded a little state machine for the whole login (with states like
WAITING_FOR_ENABLE_PASSWORD_QUESTION, WAITING_FOR_ENABLE_PROMPT, ...).
Hope that helps.
Archive administrator: firstname.lastname@example.org