Thanks! That solves my question about configuring the timeout value. However - I still have the problem (I believe) that by default, I can handle all the output. When I issue the "show version" it fails, but if I issue a command with less data returned it succeeds.
In the documentation I can see that pexpect uses a maxread and a searchwindowsize value, but I'm not sure how to use them. Any tips? Thanks again. On Tue, Oct 20, 2009 at 11:26 AM, vince spicer <vinces1...@gmail.com> wrote: > > > On Tue, Oct 20, 2009 at 11:11 AM, Nathan Farrar <nathan.far...@gmail.com> > wrote: >> >> I haven't been able to find any real examples of pexpect usage, nor >> documentation. Just little bits here and there, so I'm kind of >> struggling through. >> >> I've got the follow bit of code I'm working with: >> >> def main(): >> try: >> print 'attempting to spawn connection ... ' >> session = pexpect.spawn('ssh usern...@x.x.x.x') >> except: >> print 'couldn\'t spawn connection ... ' >> >> print 'waiting for password prompt ... ' >> session.expect('password:') >> print 'received password prompt ... ' >> >> try: >> print 'attempting to send password ... ' >> session.sendline(password) >> except: >> print 'error sending password ... ' >> >> print 'waiting for command prompt ... ' >> session.expect(command_prompt) >> print 'received command prompt ... ' >> >> try: >> print 'attempting to issue \'show version\' command ... ' >> session.sendline([expect.TIMEOUT=1, 'show version']) >> except: >> print 'error issuing \'show version\' command ... ' >> >> print 'waiting for command prompt ... ' >> session.expect(command_prompt) >> print 'received command prompt ... ' >> >> print 'attempting to print command results ... ' >> print session.before >> >> print 'closing session ... ' >> session.close() >> >> if __name__=='__main__': >> main() >> >> When I run this against a cisco device, it times out waiting for the >> command prompt after issuing the show version command. However, if I >> change 'show version' to something like 'blah blah' it doesn't time >> out, and I get the results of the command (an error message that is >> much shorter in length). >> >> I believe that the results of the show version command are simply too >> large. I think I may need to increase the size of maxread & >> searchwindowsize & set the timeout to something lower than the >> default, but I haven't been able to figure out how to do this >> correctly yet. >> >> Any help would be greatly appreciated. I'm pulling my hair out. Thank >> you. >> >> -- >> "The presence of those seeking the truth is infinitely to be preferred >> to the presence of those who think they've found it." >> >> –Terry Pratchett >> _______________________________________________ >> Tutor maillist - tu...@python.org >> To unsubscribe or change subscription options: >> http://mail.python.org/mailman/listinfo/tutor > > Looks like you are trying to end multiple commands to the sendline and not > expect > you can specify the timeout on the expect line > > try this code: > > #================================================ > > def main(): > try: > print 'attempting to spawn connection ... ' > session = pexpect.spawn('ssh usern...@x.x.x.x') > except: > print 'couldn\'t spawn connection ... ' > > print 'waiting for password prompt ... ' > session.expect('password:') > print 'received password prompt ... ' > > try: > print 'attempting to send password ... ' > session.sendline(password) > except: > print 'error sending password ... ' > > print 'waiting for command prompt ... ' > session.expect(command_prompt) > print 'received command prompt ... ' > > try: > print 'attempting to issue \'show version\' command ... ' > session.sendline('show version') #: send only command > except: > print 'error issuing \'show version\' command ... ' > > print 'waiting for command prompt ... ' > session.expect(command_prompt, timeout=1) #: set the timeout here > print 'received command prompt ... ' > > print 'attempting to print command results ... ' > print session.before > > print 'closing session ... ' > session.close() > > if __name__=='__main__': > main() > #============================== > > Vince > > > -- "The presence of those seeking the truth is infinitely to be preferred to the presence of those who think they've found it." –Terry Pratchett _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor