GNU/Linux >> Tutoriales Linux >  >> Linux

¿Interceptar entrada y salida de un ejecutable específico?

Tengo cierto ejecutable de Linux que se llama desde una aplicación más grande para realizar algunos cálculos. Quiero modificar la forma en que se realizan los cálculos, para eso primero necesito entender cómo se llama el ejecutable y de qué manera se transfieren los parámetros y datos.

Por lo tanto, me gustaría monitorear los parámetros de la línea de comando, stdin y stdout si se llama a este ejecutable. El funcionamiento normal del ejecutable no debe verse afectado.

¿Hay una manera fácil de hacerlo?

Actualización:

Probé la idea del marcador de posición del script de shell para capturar todos los datos usando el siguiente script:

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

Esto funciona bien para la entrada de prueba, pero simplemente se bloquea si se llama de verdad. Probablemente están sucediendo más cosas de las que sospechaba.

Respuesta aceptada:

La opción 1 sería modificar el código fuente de la aplicación de llamada e insertar tee en la tubería de salida para obtener una copia de la salida para su revisión en esa etapa.

La opción 2 sería escribir un script contenedor alrededor del ejecutable en cuestión. Una secuencia de comandos rápida que transmite la entrada estándar y los argumentos a la aplicación real, luego envía la salida a una ubicación para que la revise y también la escupe de la misma manera que la aplicación debería tener solo un par de líneas para preparar. Póngalo en un lugar especial y agregue esa ubicación al frente de su variable PATH, luego ejecute su aplicación.

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

Linux
  1. Ejemplos de comandos tee en Linux

  2. Cómo redirigir la salida a un archivo y stdout

  3. ¿Cómo interpretar y corregir un error de entrada/salida en Linux?

  4. Interpretando el error de entrada/salida dd

  5. Cómo extraer un valor (en una fila y columna específicas) de un archivo y asignarlo a una nueva variable

Cómo ejecutar comandos desde la entrada estándar usando Tee y Xargs en Linux

Explicación de la redirección de entrada y salida en Linux

¿Colorear la salida de los sensores?

Explicado:entrada, salida y redirección de errores en Linux

Shell Scripting Parte 4:entrada, salida y redirección

Interceptar entrada y salida de un ejecutable específico