Python Telnetlib Read_until '#' Or '>', Multiple String Determination?
if (tn.read_until('>')): action1 else: action2 or if (tn.read_until() == '>'): action1 else: action2 I just want the read_until() to check which desired Str
Solution 1:
Look at the docs. Read until wants the expected string as a positional argument and an optional timeout. I would do it like this:
>>>try:... response = tn.read_until(">", timeout=120) #or whatever timeout you choose....except EOFError as e:...print"Connection closed: %s" % e>>>if">"in response:... action1...else:... action2
If you want multiple different characters you can use read_some()
>>>whileTrue: #really you should set some sort of a timeout here.... r = tn.read_some()...ifany(x in r for x in ["#", ">"]):...break
Solution 2:
Better yet just use:
buff_tpl = tn.expect(["#", ">"])
This will return a tuple with three items, the first (index of 0) is the index of the list item matched, the second is and object matched, and the third is the output text.
You can print the buffer output using buff_tpl[2], and know which item matched using buff_tpl[0]
Post a Comment for "Python Telnetlib Read_until '#' Or '>', Multiple String Determination?"