Pexpect funktioniert einwandfrei, wenn ich in interaktiven Sitzungen arbeite, aber wenn es farbigen Text hat, passt es nicht nur zum Text, es passt auch zum Text zusammen mit ansi Farben. Die Regex dafür ist sehr kompliziert und groß. Kann mir jemand etwas vorschlagen, wie man damit arbeitet?So führen Sie das Pexpect-Skript für Terminal mit farbigem Text aus
Zum Beispiel:
statt nur auf der Suche nach:
"opendaylight-user @ root"
seine Suche:
„oder‚\ x1b [1mlogout \ x1b [0m 'zum Herunterfahren OpenDaylight. \ r \ r \ n \ r \ n \ x1b. \ r \ r \ n \
\ r \ n \ x1b [36mopendaylight-benutzer \ x1b [0m \ x1b [1m @ \ x1b [0m \ x1b [34mroot \ x1b [0m> ".
Dies ist nur ein Teil des Ausdrucks.
import pexpect
import os
def ex1():
os.chdir("opendaylight/distribution-karaf-0.3.4-Lithium-SR4/bin/")
child=pexpect.spawn("./karaf clean",cwd="/home/ubuntu/opendaylight/distribution-karaf-0.3.4-Lithium-SR4/bin/")
child.expect("[email protected]>")
print child.before
ex1()
Fehler
Traceback (most recent call last):
File "ex07.py", line 11, in <module>
ex1()
File "ex07.py", line 9, in ex1
child.expect("[email protected]>")
File "/usr/local/lib/python2.7/dist-packages/pexpect/spawnbase.py", line 321, in expect
timeout, searchwindowsize, async)
File "/usr/local/lib/python2.7/dist-packages/pexpect/spawnbase.py", line 345, in expect_list
return exp.expect_loop(timeout)
File "/usr/local/lib/python2.7/dist-packages/pexpect/expect.py", line 107, in expect_loop
return self.timeout(e)
File "/usr/local/lib/python2.7/dist-packages/pexpect/expect.py", line 70, in timeout
raise TIMEOUT(msg)
pexpect.exceptions.TIMEOUT: Timeout exceeded.
<pexpect.pty_spawn.spawn object at 0x7f2c5ca8ae10>
command: ./karaf
args: ['./karaf', 'clean']
buffer (last 100 chars): " or '\x1b[1mlogout\x1b[0m' to shutdown OpenDaylight.\r\r\n\r\n\x1b[36mopendaylight-user\x1b[0m\x1b[[email protected]\x1b[0m\x1b[34mroot\x1b[0m>"
before (last 100 chars): " or '\x1b[1mlogout\x1b[0m' to shutdown OpenDaylight.\r\r\n\r\n\x1b[36mopendaylight- user\x1b[0m\x1b[[email protected]\x1b[0m\x1b[34mroot\x1b[0m>"
after: <class 'pexpect.exceptions.TIMEOUT'>
match: None
match_index: None
exitstatus: None
flag_eof: False
pid: 20699
child_fd: 5
closed: False
timeout: 30
delimiter: <class 'pexpect.exceptions.EOF'>
logfile: None
logfile_read: None
logfile_send: None
maxread: 2000
searchwindowsize: None
delaybeforesend: 0.05
delayafterclose: 0.1
delayafterterminate: 0.1
searcher: searcher_re:
0: re.compile("[email protected]>")
Ich habe geändert. Wenn es nicht genug plz ist, lassen Sie mich wissen, welche Art von Änderungen Sie erwarten – user7369931
Suchen Sie nach Ignorieren [Escape-Codes] (https://en.wikipedia.org/wiki/ANSI_escape_code) –