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 |