0

答えが見つからないという問題があります。

Python pexpect モジュールを使用して ssh で子アプリケーションに接続し、「ls」、「history」などのコマンドを実行します。sendline の出力を取得し、特定の文字列チェーンまたはその種の他の操作が含まれているかどうかを確認するなどの操作を行うには、助けが必要です。誰か助けてくれませんか?

これは私が使用するコードの簡単な例です:

child = pexpect.spawn('ssh -l karaf -p 8101 localhost')
child.logfile = open("/home/user/python_HR/logs.txt", "w")
child.expect('password:')
child.sendline(mypassword)
child.sendline(command1)

ここで、child.sendline(command1) の結果に文字列 chaine "test" が含まれているかどうかをチェックする "if" を実行する必要があります。

すべての出力をログ ファイルに保存する方法は既に知っています。また、前後の属性は役に立ちません。前もって感謝します。

4

1 に答える 1

0

EOF に達しているので、次のようなコードを作成できます。

index = pexpect.expect(['test', pexpect.EOF, pexpect.TIMEOUT])
    if index == 0:                                          
        do_something()
    elif index == 1:
        print(pexpect.before)
    elif index == 1:
        print(pexpect.before)

EOF が予想される場合は、.before 属性を使用できると思います。

または、コマンドを実行し、その出力をファイルにパイプしてから、ファイルをダウンロードしてローカルで操作することもできます。

必要に応じて、 pexpect.interact() を使用して手動で制御を取得できます

于 2013-10-24T18:29:42.887 に答える