/ / Как да използвате 'sync_original_prompt' от pxssh модул - python, unit-testing, pexpect, pxssh

Как да използвате 'sync_original_prompt' от pxssh модула - python, test-unit, pexpect, pxssh

>>> 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

Според моето разбиране след това s.sync_original_prompt(), PROMPT променливата трябва да се върне към първоначалната подкана, която е [PEXPECT]# тук и s.prompt() трябва да доведе до True, Но това не е "т. Може ли някой да ми каже как да възстановите PROMPT променлива към оригиналния ред? и как да се използва sync_original_prompt атрибут?

Благодаря.

Отговори:

0 за отговор № 1
  • Първоначалната s.PROMPT всъщност е "\[PEXPECT\][\$\#] ", не [PEXPECT]#, Предлагам ви да пишете по следния начин:

    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() трябва да се използва по следния начин:

    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()