Telnet Abfrage

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Dittrich
User
Beiträge: 21
Registriert: Mittwoch 26. Juni 2013, 08:50

Hallo,
wie kann ich eine Abfrage mit Regex starten?
Mein Bsp funktioniert leider nicht....

Code: Alles auswählen

print "RU: "
print tn.expect("[>|#].*$)
Diese Kommande z.B funktioniert

Code: Alles auswählen

print "RU: "
print tn.read_until("[local]SE100_SRV2>")

print "LS: "
print tn.write("sh release\n")
Mfg
BlackJack

@Dittrich: Dein erstes Beispiel ist syntaktisch falsch. Da stellt sich die Frage wie sieht der tatsächliche Quelltext aus.

Das '| '-Zeichen in dem regulären Ausdruck ist sehr wahrscheinlich falsch. Innerhalb von Zeichengruppen ('[…]') hat das keine besondere Bedeutung.
Dittrich
User
Beiträge: 21
Registriert: Mittwoch 26. Juni 2013, 08:50

Ich habe verschiedene Varianten getestet:

Code: Alles auswählen

print tn.expect("[>].*$")
print tn.expect(">.*$")
print tn.expect("[>]")
print tn.expect(">")
print tn.expect(>)
Ich erhalte Fehlermeldungen ähnlich dieser:

Code: Alles auswählen


Traceback (most recent call last):
  File "telnet.py", line 20, in <module>
    print tn.expect("[>].*$")
  File "/usr/lib/python2.5/telnetlib.py", line 610, in expect
    list[i] = re.compile(list[i])
  File "/usr/lib/python2.5/re.py", line 188, in compile
    return _compile(pattern, flags)
  File "/usr/lib/python2.5/re.py", line 241, in _compile
    raise error, v # invalid expression
sre_constants.error: unexpected end of regular expression
Mfg
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

@Dittrich: jetzt, nachdem Du uns verraten hast, welches Modul du nutzt, musst Du nur noch in die Dokumentation schauen:
»The first argument is a list of regular expressions«
BlackJack

Ich hatte auch das falsche Modul vermutet, nämlich `pexpect`. :-)
Dittrich
User
Beiträge: 21
Registriert: Mittwoch 26. Juni 2013, 08:50

Hallo,
Sirius3 hat geschrieben:@Dittrich: jetzt, nachdem Du uns verraten hast, welches Modul du nutzt, musst Du nur noch in die Dokumentation schauen:
»The first argument is a list of regular expressions«
Das hatte ich auch schon gelesen nur bekomm ich das nicht umgesetzt...bzw ich komme atm nicht auf meinen Fehler... Könnte einer von euch ein Bsp. posten?

Mfg
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

@Dittrich:

Code: Alles auswählen

>>> ["Das ist eine Liste"]
>>> "Das ist keine Liste"
Dittrich
User
Beiträge: 21
Registriert: Mittwoch 26. Juni 2013, 08:50

Vielen Dank =)

Code: Alles auswählen

print tn.expect(['>.*|#.*'])
funktioniert.
Antworten