0

pexpect前にandを使用したことがありsendlineますが、今回はパイプワイルドカードを使用してより長いコマンドを実行しています。以下を参照してください。

commandToRun='/bin/bash -c "/var/scripts/testscripts//extract -o | tail -3"'
returnedString = sendLine(commandToRun)

sendLine 関数を持つ私のクラスは、次のようになります。

    self.connection = pexpect.spawn('%s %s' % (protocol, host))
    self.connection.setecho(False)
    self.connection.setwinsize(300, 300)

しかし、コードを実行しているとreturnedString、応答だけでなく要求も含まれていることがわかりました。

したがって、を印刷するreturnedStringと、次のようになります。

bin/bash -c "/var/scripts/testscripts//extract -o | tail -3"<cr>
100<cr>
102<cr>
103<cr>

応答に同じバッファ内の要求が含まれるのはなぜですか? 私はすでに設定setecho(False)していますが、役に立ちません!

編集: (正しい修正) 応答からすべてを手動で削除し、要求も削除する必要があります。setecho(False) はまだ何もしません!

4

1 に答える 1

1

私はこれに対する解決策を自分で見つけました。(応答でエコーをオフにします)

commandToRun = 'bash -c "less /readfile | tail -4"'
yourConnection.sendLine("stty -echo")
commandResult = yourConnection.sendLine(commandToRun)
self.sendLine("stty echo")

したがって、基本的には、''を使用してシェルでコマンドを実行してから、bashbash -cをオンにします。echo

于 2012-11-30T10:16:57.337 に答える