[TriLUG] Re: expect problem

Greg Brown gwbrown1 at gmail.com
Tue Sep 20 18:43:28 EDT 2005


Ah! In case anyone else runs into this, it turns out the probelm was the
following line:

expect "*[y/n]:"

I should have seen this the first time, but the problem is the "["
character. This is a character that is used in if/then loops (i.e. if ![ 1 =
2 ] - and I'm not sure if that sytax is correct). Anyway, the fix was to put
the standard escape character "\" before the "[" and the problem goes away.
With that in mind the new line is:

expect "*\[y/n]:"

Volia. Problem solved.

Greg

On 9/20/05, Greg Brown <gwbrown1 at gmail.com> wrote:
>
> Hey peeps.. I seem to have a bug in my expect script. The script changes
> passwords on HP blade servers via telnet. It appears that I am getting an
> extra line back from the server that I was not, um, expecting and it causes
> the script to exit. Here is the section of script I am concered with:
>
> # look for "accepted"
> expect "*accepted."
>
> # now look for <hostname>-User Access Control#
> expect "*Control#"
>
> # send an apply
> send "apply\r"
>
> # look for the same prompt as before
> expect "*Control#"
>
> # now tell it to save
> send "save\r"
>
> # now look for the FLASH prompt
> expect "*[y/n]:"
>
> # enter a "Y"
> send "Y\r"
>
> the script fails after "apply" here is captured output (but redirecting
> stdout, nothing was ever sent to stderr):
>
> - User Access Control# usrpw
> Changing USER password; validation required:
> Enter current administrator password:
> Enter new user password:
> Re-enter new user password:
> New user password accepted.
>
> >> rtpndsfnth1a8 - User Access Control# apply
> ------------------------------------------------------------------
> Apply complete; don't forget to "save" updated configuration.
>
> >> xxxxxxxxxxx - User Access Control# spawn telnet xxx.xxx.xxx.252
> Trying xxx.xxx.xxx..252...
>
>
> See, that extra "Apply complete" line seem to be throwing me off. The next
> line should be the "Control" prompt I am looking for and I thought that this
> extra line would be processed as I thought it should but it is causing the
> whole script to fail. The script itself is called via a shell script and it
> is only invoked one IP at a time (via the parent shell script).
>
> Any ideas?
>
> Greg
>
>



More information about the TriLUG mailing list