|
From: Bob M. <ram...@gm...> - 2017-03-30 06:44:04
|
Hi Mike,
Your suggestion did help, but not in the way I thought.
I did get the prompt I was looking for, but in the process of working
through the code again, I also noticed a PEBKAC error, which when fixed,
the problem went away.
I had missed getting the right number of arguments to an in-house
module's method, and it was doing exactly what I told it to do. Just
not what I *wanted* it to do. :(
Thanks for taking the time help. It is appreciated.
Bob
On 03/26/2017 06:29 PM, Bob McGowan wrote:
> Not yet. Hopefully first thing in the morning.
>
> On 03/25/2017 08:03 PM, mike nicholas wrote:
>> Hey Bob, no worries, yup, we got this one.
>>
>> Curious to know if any of those suggestions helped? Were you able to do
>> some tests yet?
>>
>> On Mar 25, 2017 9:43 PM, "Bob McGowan" <ram...@gm...> wrote:
>>
>>> No, I did not.
>>>
>>> I guess I misunderstood the email from the moderator regarding my
>>> attempt to post while not a member of the list.
>>>
>>> I thought the first attempt would be rejected, so I joined the list and
>>> sent the email as a member.
>>>
>>> I assume the first one actually was released, hence the double post. My
>>> apologies for that.
>>>
>>> By the way, I did answer your first two responses, and thought I had
>>> included the list, but that did not show up in my mailbox (I think I
>>> have things set so it should have).
>>>
>>> Please let me know if you get this, either way.
>>>
>>> Thanks,
>>>
>>> Bob
>>>
>>> On 03/25/2017 12:49 PM, mike nicholas wrote:
>>>> Hello again, Bob,
>>>>
>>>> Did you truly intend to re-send the same email from yesterday? Were you
>>>> able to test those previous suggestions?
>>>>
>>>> Thanks kindly!
>>>>
>>>> On Mar 25, 2017 8:50 AM, "McGowan Jr, Bob" <bob...@sa...> wrote:
>>>>
>>>>> Hello List,
>>>>>
>>>>> I'm supporting legacy code that uses Expect, but I'm no expert at this
>>>>> tool. Nor can I figure out a way to pose the question to the archive
>>>>> server to search for anything helpful, so here I am, hoping for an
>>> answer.
>>>>> Also, I have not signed up to the list, since I hopefully will have no
>>>>> future needs in this arena. So please reply all.
>>>>>
>>>>> Before the section that does the Expect processing, below, there is a
>>> sub
>>>>> defined as follows:
>>>>>
>>>>> $passHandler = sub {
>>>>> my ($ssh, $logging, $password) = @_;
>>>>> $ssh->log_file(undef);
>>>>> $ssh->stty(qw(-echo));
>>>>> print $ssh "$password\r";
>>>>> $ssh->stty(qw(echo));
>>>>> $pat = quotemeta($password);
>>>>>
>>>>> $ssh->expect(0, '-re', "$pat");
>>>>>
>>>>> $ssh->log_file(\&logMethod) if $logging;
>>>>> return $ssh->error();
>>>>> };
>>>>>
>>>>> There are a number of other patterns to look for besides the two prompts
>>>>> listed below, each with appropriate logic contained in other 'sub'
>>>>> definitions. My problem is with the second prompt. Also, I'm not being
>>>>> pedantic here about format or syntax, this is not intended to run
>>>>> (currently).
>>>>>
>>>>> $expectObj->expect($timeout,
>>>>> '-re', $prompt1, sub {
>>>>> $failed = $passHandler($ssh, $logging,
>>>>> $password);
>>>>> if ($failed) {
>>>>> return "something";
>>>>> } else {
>>>>> return exp_continue_timeout();
>>>>> }
>>>>> },
>>>>> '-re', $prompt2, sub {
>>>>> $output = $ssh->exp_before();
>>>>> if ($secondPass) {
>>>>> $failed = $passHandler($ssh,
>>>>> $logging, $password);
>>>>> if ($failed) {
>>>>> return 'something';
>>>>> } else {
>>>>> return
>>>>> exp_continue_timeout();
>>>>> }
>>>>> } else {
>>>>> return # an error
>>>>> }
>>>>> },
>>>>> ...
>>>>> );
>>>>>
>>>>> I have run the original code with debugging on.
>>>>>
>>>>> Processing $prompt1 happens before processing for $prompt2. $prompt1 is
>>>>> the login prompt passed through by 'ssh'.
>>>>>
>>>>> Handling the ssh login step is works fine.
>>>>>
>>>>> Processing the second prompt looks for a string like 'Enter secondary
>>>>> password: ' which is detected correctly and processing goes into the
>>>>> passHandler, where the password is sent.
>>>>>
>>>>> The function then does the 'expect' on the password "pattern", which is
>>>>> there to be sure we don't get any echo'ed password passed through.
>>>>>
>>>>> But in the failing case, there is no password echoed, and the next set
>>> of
>>>>> returned strings contains stuff that doesn't match, within the
>>>>> passHandler. So it times out.
>>>>>
>>>>> Upon returning to the enclosing 'expect' call, expect immediately begins
>>>>> 'waiting' for new data. The strings that were picked up in passHandler
>>> are
>>>>> not looked at, and unfortunately they have the next string being
>>> 'waited'
>>>>> for, so the whole thing times out and processing fails.
>>>>>
>>>>> I'm happy to try to make something that actually runs, if that is
>>> needed,
>>>>> but that will take a bit more time and I hope this is enough to point
>>>>> someone in the right direction.
>>>>>
>>>>> Many thanks,
>>>>>
>>>>> Bob
>>>>>
>>>>> ------------------------------------------------------------
>>>>> ------------------
>>>>> Check out the vibrant tech community on one of the world's most
>>>>> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
>>>>> _______________________________________________
>>>>> Expectperl-discuss mailing list
>>>>> Exp...@li...
>>>>> https://lists.sourceforge.net/lists/listinfo/expectperl-discuss
>>>>>
>>>>
>>>>
>>>> ------------------------------------------------------------
>>> ------------------
>>>> Check out the vibrant tech community on one of the world's most
>>>> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Expectperl-discuss mailing list
>>>> Exp...@li...
>>>> https://lists.sourceforge.net/lists/listinfo/expectperl-discuss
>>>>
>>> ------------------------------------------------------------
>>> ------------------
>>> Check out the vibrant tech community on one of the world's most
>>> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
>>> _______________________________________________
>>> Expectperl-discuss mailing list
>>> Exp...@li...
>>> https://lists.sourceforge.net/lists/listinfo/expectperl-discuss
>>>
> ------------------------------------------------------------------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> Expectperl-discuss mailing list
> Exp...@li...
> https://lists.sourceforge.net/lists/listinfo/expectperl-discuss
|