2017-07-30 2 views
0

Ich versuche Telnet auf Remote-Server und versuchen, die Antwort zurück zu bekommen.Probleme bei der Verwendung von Telnet.expect in Python 2.7

Ich verwendete früher telnet.read_until, um zu passen, ob Prompt/Muster angezeigt wurde oder nicht, aber read_until gibt alles zurück, auch wenn keine Übereinstimmung vorhanden ist. Ich dachte an telnet.expect verwenden, aber ich bin immer Fehler

Sie den Code unten

com = re.compile("\#") # is the prompt 
tn.write("somecommand" + "\n") 
res = tn.expect(com, 10) 

Error Ich erhalte ist

File "reg.txt", line 23, in login 
    res = tn.expect(com, 10) 
    File "C:\Python27\lib\telnetlib.py", line 593, in expect 
    list = list[:] 
TypeError: '_sre.SRE_Pattern' object is not subscriptable 

Antwort

1

telnetlib.expect() erfordert list als erstes Argument, Sie SRE_pattern geben.

Von telnetlib documentation:

Telnet.expect (Liste, timeout = None)

lesen, bis man aus einer Liste von einem regulären Ausdrücken übereinstimmt.

Das erste Argument ist eine Liste regulärer Ausdrücke, entweder kompiliert (Regex-Objekte) oder nicht kompiliert (Byte-Strings). Das optionale zweite Argument ist ein Timeout in Sekunden; Standardmäßig wird unbegrenzt blockiert.

[...]


com = re.compile("\#") # is the prompt 
tn.write("somecommand" + "\n") 
res = tn.expect([com], 10) 

Sollte Werke (der Unterschied ist expect([com]) statt expect(com)).

+0

Danke. Es funktioniert – Nitesh

Verwandte Themen