2012-03-01 6 views
0

Linuxマシンとシリアルポートでやりとりするプログラムを作成しています。私の主な通信チャネルとしてpexpect.spawnを使用しています:与えられた文字列で各STDERRをプリペンドすることは可能ですか?

proc = pexpect.spawn("cu dir -l /dev/ttyUSB0 -s 115200", logfile = *someFile*) 

私はsendline( "cmd")メソッドでマシンにコマンドを送信しています。各セッションの終わりに、ログファイルを解析してコマンドの動作を確認します。

私は、ログファイルからstdoutとstderrに出力された行を区別することができますが、現在はその方法がありません。 これは、stderrに出力される各行の先頭に、指定された文字列をグローバルに追加する方法ですか?

答えて

0

stdoutとstderrをキャプチャする方法については言及していませんが、stdoutとstderrを区別する簡単な方法は、単にstdoutとstderrを別のファイルに配置することです。たとえば:

./command.py> STDOUTログ2> stderrのログ

+0

私は、pexpect.spawnが提供するログファイルを通してそれらを 'キャプチャ'します。コマンドは別のコンピュータ上で実行されているので、ファイルに保存することはできません(2台のマシン間でファイルを転送できないため) – EagerToLearn

+0

待ち、cuのインスタンスまたはコマンドからstdout/stderrをキャプチャしようとしていますかリモートのLinuxマシンで実行しますか? – Perry

+0

リモートLinuxマシンで実行されているコマンドから、それが私の質問ではっきりしていない場合はごめんなさい – EagerToLearn

0

私は、これはpexpectの限界だと思います。あなたは基本的にブラックボックスのコマンドプロンプトを扱っているので、pexpectはコンソールに返された文字列がstdoutかstderrかを知りません。正規表現ベースのポストプロセッサを書くことができるように、あなたのシステムのメッセージとエラーフォーマットの制限されたセットを安全に仮定できますか?

+0

残念ながら、システムは任意のコマンドセットで動作しなければなりません – EagerToLearn

関連する問題