【问题标题】:How to use 'sync_original_prompt' from pxssh module如何使用 pxssh 模块中的“sync_original_prompt”
【发布时间】:2017-05-27 10:55:43
【问题描述】:
>>> from pexpect import pxssh
>>> s=pxssh.pxssh()
>>> s.login('IP','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属性?

谢谢。

【问题讨论】:

    标签: python unit-testing pexpect pxssh


    【解决方案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()
      

    【讨论】:

      猜你喜欢
      • 2020-06-17
      • 2017-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-22
      • 1970-01-01
      • 2017-01-15
      • 2016-08-09
      相关资源
      最近更新 更多