GNU/Linux >> Linux の 問題 >  >> Linux

特定の実行可能ファイルからの入力と出力をインターセプトしますか?

いくつかの計算を実行するために、より大きなアプリケーションから呼び出される特定のLinux実行可能ファイルがあります。計算の実行方法を変更したいので、最初に実行可能ファイルがどのように呼び出され、パラメーターとデータがどのように転送されるかを理解する必要があります。

したがって、この実行可能ファイルが呼び出された場合は、コマンドラインパラメータstdinとstdoutを監視したいと思います。実行可能ファイルの通常の動作が妨げられることはありません。

それを行う簡単な方法はありますか?

更新:

次のスクリプトを使用してすべてのデータを取得するシェルスクリプトプレースホルダーのアイデアを試しました:

#!/bin/bash
export LOGFILE=/tmp/logname
echo `env` > $LOGFILE-env
echo "[email protected]" >> $LOGFILE-arguments
tee -a $LOGFILE-stdin | /path/to/real/executable 2>&1 | tee -a $LOGFILE-stdout

これはテスト入力には問題なく機能しますが、実際に呼び出された場合はハングします。おそらく、私が思っていたよりもさらに多くのことが起こっているでしょう。

承認された回答:

オプション1は、呼び出し元のアプリのソースコードを変更し、teeを挿入することです。 出力パイプラインに追加して、その段階で確認するために出力のコピーを取得します。

オプション2は、問題の実行可能ファイルの周りにラッパースクリプトを作成することです。 stdinと引数を実際のアプリに渡し、出力を確認できる場所にティーで送信し、アプリが数行で作成するのと同じように吐き出します。特別な場所に配置し、その場所をPATH変数の前に追加してから、アプリケーションを実行します。

#!/bin/sh
cat - | /path/to/realapp [email protected] | tee /tmp/debug_output

Linux
  1. キーボード入力とテキスト出力はどのように機能しますか?

  2. Ssh –すべての入力と出力がリダイレクトされたときにSshはどのようにパスワードを要求しますか?

  3. Iptablesと透過プロキシ?

  1. 出力列から冗長性を削除しますか?

  2. コマンド出力をファイルと端末にリダイレクト

  3. Linux で入出力エラーを解釈して修正する方法は?

  1. リダイレクトとパイプ出力?

  2. dd 入出力エラーの解釈

  3. ファイルから (特定の行と列の) 値を抽出し、それを新しい変数に割り当てる方法