GNU/Linux >> Linux Esercitazione >  >> Linux

Intercetta input e output da un eseguibile specifico?

Ho un certo eseguibile Linux che viene chiamato da un'applicazione più grande per eseguire alcuni calcoli. Voglio modificare il modo in cui vengono eseguiti i calcoli, per questo devo prima capire come viene chiamato l'eseguibile e in che modo vengono trasferiti i parametri e i dati.

Quindi, vorrei monitorare i parametri della riga di comando, stdin e stdout se questo eseguibile viene chiamato. Il normale funzionamento dell'eseguibile non dovrebbe essere disturbato.

C'è un modo semplice per farlo?

Aggiornamento:

Ho provato l'idea del segnaposto dello script di shell per acquisire tutti i dati utilizzando il seguente 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

Funziona bene per l'input di test, ma si blocca solo se viene chiamato per davvero. Probabilmente sta succedendo anche più di quanto sospettassi.

Risposta accettata:

L'opzione 1 sarebbe quella di modificare il codice sorgente dell'app chiamante e inserire tee nella pipeline di output per ottenere una copia dell'output per la revisione in quella fase.

L'opzione 2 sarebbe quella di scrivere uno script wrapper attorno all'eseguibile in questione. Uno script rapido che trasmette stdin e argomenti all'app reale, quindi tee è l'output in una posizione che puoi rivedere e lo sputa indietro nello stesso modo in cui l'app dovrebbe essere solo un paio di righe da montare. Mettilo in un posto speciale e aggiungi quella posizione all'inizio della tua variabile PATH, quindi esegui la tua applicazione.

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

Linux
  1. Rimuovere la ridondanza dalle colonne di output?

  2. tee Esempi di comandi in Linux

  3. Come reindirizzare l'output su un file e stdout

  4. Come interpretare e correggere un errore di input/output in Linux?

  5. Intercetta l'input e l'output da un eseguibile specifico

Come eseguire comandi dall'input standard utilizzando Tee e Xargs in Linux

Spiegazione del reindirizzamento di input e output su Linux

Colora l'output dei sensori?

Spiegazione:input, output e reindirizzamento degli errori in Linux

Shell Scripting Part4 – Input, Output e Reindirizzamento

L'output del comando reindirizza al file e al terminale