2017-01-12 6 views
0
>>> 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?Как использовать «sync_original_prompt» из модуля pxssh

Спасибо.

ответ

0
  • Начальное 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() 
    
+0

Спасибо .. !! :) –