GNU/Linux >> Tutoriels Linux >  >> Linux

Intercepter l'entrée et la sortie d'un exécutable spécifique ?

J'ai un certain exécutable Linux qui est appelé à partir d'une application plus importante pour effectuer certains calculs. Je souhaite modifier la façon dont les calculs sont effectués, pour cela je dois d'abord comprendre comment l'exécutable est appelé et de quelle manière les paramètres et les données sont transférés.

Donc, je voudrais surveiller les paramètres de ligne de commande, stdin et stdout si cet exécutable est appelé. Le fonctionnement normal de l'exécutable ne doit pas être perturbé.

Existe-t-il un moyen simple de le faire ?

Mise à jour :

J'ai essayé l'idée d'espace réservé du script shell pour récupérer toutes les données à l'aide du script suivant :

#!/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

Cela fonctionne bien pour l'entrée de test, mais il se bloque simplement s'il est appelé pour de vrai. Il se passe probablement encore plus que je ne le pensais.

Réponse acceptée :

L'option 1 serait de modifier le code source de l'application appelante et d'insérer tee dans le pipeline de sortie pour obtenir une copie de la sortie pour examen à ce stade.

L'option 2 serait d'écrire un script wrapper autour de l'exécutable en question. Un script rapide qui transmet stdin et des arguments à la vraie application, puis envoie la sortie à un emplacement que vous pouvez examiner et la recrache également de la même manière que l'application ne devrait avoir que quelques lignes à préparer. Placez-le dans un endroit spécial et ajoutez cet emplacement devant votre variable PATH, puis exécutez votre application.

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

Linux
  1. tee Exemples de commandes sous Linux

  2. Comment rediriger la sortie vers un fichier et stdout

  3. Rediriger la sortie de la commande vers le fichier et le terminal

  4. Intercepter l'entrée et la sortie d'un exécutable spécifique

  5. Interprétation dd Erreur d'entrée/sortie

Comment exécuter des commandes à partir d'une entrée standard à l'aide de Tee et Xargs sous Linux

Explication de la redirection d'entrée-sortie sur Linux

Coloriser la sortie des capteurs ?

Explication :Redirection des entrées, des sorties et des erreurs sous Linux

Shell Scripting Part4 - Entrée, sortie et redirection

Linux :Comment utiliser un fichier en entrée et en sortie en même temps ?