read_until problem under telnetlib

Daniel Fackrell newsgroups.NOSPAM at
Wed Jun 11 21:19:41 CEST 2003

dma2 wrote:
> hi, i am having a problem that seems not to have been adressed yet on
> this list
> i work on thousands of cisco equipements, and as usual the cisco
> prompt is not consistent across their whole range of equipements and i
> need this kind of code
> tn.write ('sh conf\n') #this command print the startup configuration
> on cisco
> try:
>    sh_conf = tn.read_until(["\(enable\)", "#"],5)
> except EOFError :
>    print "telnet interrompu, impossible de lire le sh_conf" + ip
>    unreachable.write("telnet interrompu, impossible de lire le
> sh_conf" + ip + '\n')
>    continue
> i used to match a sting like "foo" i had previously sent to the
> equipement but i need a cleaner solution that does not make the cisco
> complain about unknown command
> i want to match 2 differents strings ( ios or catos )
> and i get this message
> Traceback (most recent call last):
>   File "C:\Python22\script\", line 265, in ?
>     sh_ver = tn.read_until([ "\(enable\)", "#" ],2)
>   File "C:\Python22\lib\", line 284, in read_until
>     i = self.cookedq.find(match)
> TypeError: expected a character buffer object
> i use this line elsewhere and it works
> prompt5 = tn.expect (["\(enable\)","#"],2)
> expect is supposed to accept multiple string or compile regexp
> but i can't get it to work
> any help welcome
> thanks

You are using tn.read_until() where you're getting the traceback, and
tn.expect() where you're not.  I suspect you intended tn.expect() in both
places, as read_until() takes a string-like object (Maybe "character buffer"
in the error could be replaced with something clearer?) as its first
argument instead of a list of regular expressions.


Daniel Fackrell (newsgroups.NOSPAM at
When we attempt the impossible, we can experience true growth.

More information about the Python-list mailing list