/ / Wie man 'sync_original_prompt' von pxssh module - python, unit-testing, pexpect, pxssh benutzt

Wie man 'sync_original_prompt' von pxssh module - python, unit-testing, pexpect, pxssh benutzt

>>> from pexpect import pxssh
>>> s=pxssh.pxssh()
>>> s.login("10.10.62.253","USER","PASSWORD",auto_prompt_reset=True)
True
>>> s.sendline("echo Test");
10
>>> s.prompt()
True
>>> s.after
"[PEXPECT]# "
>>> s.PROMPT="BTEQ -- Enter your SQL request or BTEQ command:"
>>> s.sendline("bteq .logon dbc,dbc")
20
>>> s.prompt()
True
>>> s.after
"BTEQ -- Enter your SQL request or BTEQ command:"
>>> s.sendline("quit;")
6
>>> s.prompt()
False
>>> s.PROMPT="[PEXPECT]# "
>>> s.prompt()
False
>>> s.sync_original_prompt()
True
>>> s.prompt()
False

Nach meinem Verständnis nach s.sync_original_prompt(), PROMPT Die Variable sollte auf die ursprüngliche Eingabeaufforderung zurückgesetzt werden [PEXPECT]# hier und s.prompt() sollte dazu führen True. Aber es tut es nicht. Kann mir bitte jemand sagen, wie man es zurücksetzt PROMPT Variable zur ursprünglichen Eingabeaufforderung? und wie man es benutzt sync_original_prompt Attribut?

Vielen Dank.

Antworten:

0 für die Antwort № 1
  • Die Initiale s.PROMPT (eine Regexp-Zeichenfolge) ist eigentlich "\[PEXPECT\][\$\#] "nicht [PEXPECT]#. Ich würde vorschlagen, dass Sie so schreiben:

    savePrompt = s.PROMPT
    
    s.PROMPT = "a-new-prompt"
    s.sendline("bteq ...")
    s.prompt()                 # expect the new prompt
    
    s.PROMPT = savePrompt      # restore the saved prompt
    s.sendline("quit;")
    s.prompt()                 # expect the saved prompt
    
  • sync_original_prompt() sollte so verwendet werden:

    s.sync_original_prompt() # this make sure you are at the prompt
    s.set_unique_prompt()    # change the shell"s prompt to the default PROMPT
    s.sendline("run some command")
    s.prompt()