GNU/Linux >> Belajar Linux >  >> Linux

Mencegat Input Dan Output Dari Executable Tertentu?

Saya memiliki executable Linux tertentu yang dipanggil dari aplikasi yang lebih besar untuk melakukan beberapa perhitungan. Saya ingin mengubah cara penghitungan dilakukan, untuk itu saya harus terlebih dahulu memahami bagaimana executable dipanggil dan dengan cara apa parameter dan data ditransfer.

Jadi, saya ingin memantau parameter baris perintah, stdin dan stdout jika executable ini dipanggil. Operasi normal dari executable tidak boleh diganggu.

Apakah ada cara mudah untuk melakukannya?

Pembaruan:

Saya mencoba ide placeholder skrip Shell untuk mengambil semua data menggunakan skrip berikut:

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

Ini berfungsi dengan baik untuk input pengujian, tetapi hanya hang jika dipanggil nyata. Mungkin ada lebih banyak yang terjadi daripada yang saya duga.

Jawaban yang Diterima:

Opsi 1 adalah memodifikasi kode sumber aplikasi panggilan dan memasukkan tee ke dalam pipa keluaran untuk mendapatkan salinan keluaran untuk ditinjau pada tahap itu.

Opsi 2 adalah menulis skrip pembungkus di sekitar executable yang dimaksud. Skrip cepat yang meneruskan stdin dan argumen ke aplikasi nyata, lalu tee adalah output ke lokasi untuk Anda tinjau dan juga mengeluarkannya kembali dengan cara yang sama seperti aplikasi seharusnya hanya beberapa baris untuk disiapkan. Letakkan di tempat khusus dan tambahkan lokasi itu ke depan variabel PATH Anda, lalu jalankan aplikasi Anda.

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

Linux
  1. Bekerja dengan Input Output dan Error Redirection di Linux

  2. Ssh – Bagaimana Ssh Meminta Kata Sandi Saat Semua Input dan Output Dialihkan?

  3. Redirect Dan Output Pipa?

  1. Contoh Perintah tee di Linux

  2. Cara mengarahkan output ke file dan stdout

  3. Output perintah dialihkan ke file dan terminal

  1. Menghapus Redundansi Dari Kolom Keluaran?

  2. Bagaimana cara menafsirkan dan memperbaiki kesalahan Input/output di Linux?

  3. Menafsirkan kesalahan Input/Output dd