2017-07-22 7 views
3

デバイスの起動シーケンスを解析しようとしています。 デバイスのシリアルポートに接続するターミナルサーバーにtelnetを使って接続します。インタラクティブな解析に失敗しましたか?

import pexpect 
child = pexpect.spawn ('telnet x.x.x.x yyyy') 
child.expect ('login: ') 
child.sendline ('anonymous') 
child.expect ('Password:') 
child.sendline ('[email protected]') 

次は失敗します:

import pexpect 
child = pexpect.spawn ('telnet x.x.x.x yyyy') 
child.expect ('Hit [Enter] to boot immediately, or space bar for command prompt.', timeout=300) 
child.send ('\x20') 
print child.before 

私の目的は、時にデバイスが起動され、端末を意味し、以下のスクリプトが動作し、中に私を記録します

は、スクリプト& sendlineに応答し、それは、スクロールの途中で私の予想される文字列を使って行指向の出力を行います。

上記のスクリプトは一致しません。 さらにデバッグすると、 "child.before"はログインプロンプトの前の最後の行を表示します。失敗の原因は何ですか?

+1

'['と ']'はREにとって特別な意味を持ちます。 'Hit [Enter]'を 'Hit \\ [Enter]'に置き換えてみてください。 – pynexj

+0

child.expect( 'すぐに起動するには[Enter \]を押す\、コマンドプロンプトにはスペースバーを入力してください。'、300) –

答えて

1

ビンゴ!エスケープ文字は、私が欠けていたものでした。

+0

この回答に欠けていた内容の明示的なコードを入力し、 。 – SeeDerekEngineer

+0

child.expect( 'すぐに起動するには[Enter \]を押す\、コマンドプロンプトにはスペースバーを入力してください'、300) –

関連する問題