/ / Comment utiliser 'sync_original_prompt' à partir du module pxssh

Comment utiliser 'sync_original_prompt' depuis le module pxssh - python, unit-testing, 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

Selon ma compréhension après s.sync_original_prompt(), PROMPT variable doit réinitialiser à l'invite initiale, qui est [PEXPECT]# ici et s.prompt() devrait aboutir à True. Mais il ne "t. Quelqu'un peut-il me dire s'il vous plaît comment réinitialiser PROMPT variable à l'invite d'origine? et comment utiliser sync_original_prompt attribut?

Merci.

Réponses:

0 pour la réponse № 1
  • La première s.PROMPT (une chaîne d'expression rationnelle) est en fait "\[PEXPECT\][\$\#] ", ne pas [PEXPECT]#. Je vous suggère d’écrire comme ceci:

    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() devrait être utilisé comme ceci:

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