Pexpect fonctionne correctement lorsque je cours en sessions interactives, mais s'il contient du texte en couleur, il ne correspond pas seulement au texte, il correspond au texte avec les couleurs ansi. L'expression rationnelle pour ceci est très compliquée et grande. Quelqu'un peut-il me suggérer quelque chose comment travailler avec cela.Comment exécuter le script pexpect pour un terminal avec du texte en couleur
Par exemple:
au lieu de simplement la recherche de:
"opendaylight-utilisateur root @"
sa recherche:
« ou \ x1b [1mlogout \ x1b [0m 'pour arrêter OpenDaylight. \ r \ r \ n \ r \ n \ x1b. \ r \ r \ n
\ r \ n \ x1b [36mopendaylight-utilisateur \ x1b [0m \ x1b [1m @ \ x1b [0m \ x1b [34mroot \ x1b [0m> ".
Cela fait juste partie de l'expression.
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()
Erreur
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]>")
J'ai changé. Si ce n'est pas suffisant, faites-moi savoir quel genre de changements vous attendez – user7369931
Essayez de faire une recherche pour ignorer [codes d'échappement] (https://en.wikipedia.org/wiki/ANSI_escape_code) –