2017-07-26 1 views
0
import pexpect # importing the python-expect 
child = pexpect.spawn ('telnet x.x.x.x y') 
child.expect ('Hit \[Enter\] to boot immediately\, or space bar for command prompt.', 300) 
child.send ('\x20') 
if child.expect ('loader>' or 'OK ', 10): 
    child.sendline ('boot -s') 

Was ich versuche, hier zu tun ist:pexpect zu erwarten mehr als ein Muster

  • Automatisierung Login des Single-User-Modus für ein Gerät von der Boot-Sequenz Parsen.
  • Verbinden mit dem Gerät über einen Terminalserver über den Konsolenanschluss. $ Ich benutze pexpect, da die Boot-Sequenz eine einzelne Zeile ist.
  • pexpect Arbeit für 'loader>' oder 'OK' getrennt & die nächste Zeile aber nicht zusammen ausführen.

Antwort

0

Nach der manual:

expect(pattern, timeout=-1, searchwindowsize=-1, async=False)

Dies soll durch den Strom, bis ein Muster angepasst ist. Das Muster ist überlastet und kann mehrere Typen erfordern. Das Muster kann ein StringType, EOF, ein kompiliertes Re oder eine Liste dieser Typen sein. Strings werden kompiliert, um Re-Typen. Dies gibt den Index in die Musterliste zurück. Wenn das Muster keine Liste war, gibt dies Index 0 bei einer erfolgreichen Übereinstimmung zurück.
[...]