1

pexpect を使用してスポーン オブジェクトを作成するスクリプトがあります。

コードは次のようになります。

self.rshcmd='rsh 192.X.X.X'
self.pipe1 = pexpect.spawn(command=self.rshcmd, logfile=sys.stdout,maxread=512)

これに入った後、私が得るプロンプトは>

そして今、私suはパスワードを送信してから与えることでsuになります。期待どおりのプロンプトが表示されるようになりました#

この生成された PC (192.XXX) にルーターが接続されています。192.168.1.1

を送信して、このルーターに telnet で接続しますtelnet 192.168.1.1。このルーターを使い終わったら、telnet セッションを終了したいと思います。

そのため、送信して、生成された PC のルートに戻ることをexit期待します。#しかし、私が見ているのは、実際に<プロンプ​​トとして取得していることです。

どういうわけか、「exit」を2回送信しています。1 つは telnet から私を引き離し、もう 1 つは root から私を引き離します。パイプがフラッシュされていないと思います。スタックされた古いコマンドが送信されています。

パイプ内の古いコマンドをすべてフラッシュする方法はありますか?

ドキュメントにはフラッシュ機能がありますが、何もしないようです:

flush(self)
    This does nothing. It is here to support the interface for a
    File-like object.
4

1 に答える 1

1

行う

child.send(cmd)
child.pexpect(cmd)
child.send('\n')

それ以外の

child.sendline(cmd)

これで問題は解決します。(ただし、パスワードを送信するときは child.sendline(passwrd) を実行します)

于 2013-11-15T20:20:55.710 に答える