/ / Como usar o 'sync_original_prompt' do módulo pxssh - python, unit-testing, pexpect, pxssh

Como usar o 'sync_original_prompt' do módulo 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

Conforme meu entendimento depois s.sync_original_prompt(), PROMPT variável deve redefinir para o prompt inicial, que é [PEXPECT]# aqui e s.prompt() deve resultar em True. Mas isso não pode Alguém por favor me diga como redefinir PROMPT variável para o prompt original? e como usar sync_original_prompt atributo?

Obrigado.

Respostas:

0 para resposta № 1
  • A inicial s.PROMPT (uma string regexp) é na verdade "\[PEXPECT\][\$\#] ", não [PEXPECT]#. Eu sugiro que você escreva assim:

    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() deve ser usado assim:

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