GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Cara Mencatat Setiap Perintah yang Diketik Ke Bash Dan Setiap Operasi File?

Saya ingin mencatat setiap perintah yang diketik ke bash (baik oleh root atau pengguna) serta setiap operasi file.

Idenya adalah saya dapat menulis alat yang dapat menginterogasi file log ini dan memberikan informasi yang sangat berguna.

Misalnya, akan sangat bagus untuk membuat daftar semua perintah yang pernah diketik, satu per baris, dengan “- – -” untuk jeda waktu 8-24 jam dan “===mis. 24 Juni 2014 ===” untuk jeda>24 jam. Jika itu juga menghilangkan duplikat dalam sesi “===…” bahkan lebih baik!

Itu berarti bahwa setiap kali saya menyelesaikan beberapa tugas seperti "upgrade flask/mod_wsgi/apache ke Python 3.x" catatan tertinggal, jejak yang bisa saya ambil jika saya harus melakukan hal yang sama enam bulan kemudian.

Untuk tujuan yang sama, akan sangat menyenangkan untuk melihat perubahan sistem file apa yang terjadi setelah menginstal paket tertentu. Itu akan memberi tahu saya di mana file konfigurasi diletakkan.

PS Saya menggunakan Ubuntu 14.04

Jawaban yang Diterima:

Ini tidak sekomprehensif akuntansi nyata, dan dapat dibatalkan dengan mudah oleh pengguna, tetapi dengan asumsi itu tidak harus menjadi sistem akuntansi nyata dan bahwa baik BASH dan rsyslog sedang digunakan, edit file BASH RC seluruh sistem :

sudo -e /etc/bash.bashrc

Tambahkan ke akhir file itu:

export PROMPT_COMMAND='RET_VAL=$?;logger -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]+[ ]*//" ) [$RET_VAL]"'

Di atas, logger mencatat waktu, pengguna, perintah, dan nilai pengembalian perintah. Siapkan logging untuk “local6” dengan file baru:

sudo -e /etc/rsyslog.d/bash.conf

Dan isinya…

local6.*    /var/log/bash_commands.log

Mulai ulang rsyslog:

sudo service rsyslog restart

Keluar. Masuk. Rotasi log:

sudo -e /etc/logrotate.d/rsyslog

Ada daftar file log untuk diputar dengan cara yang sama…

/var/log/mail.warn
/var/log/mail.err
[...]
/var/log/message

Tambahkan file log bash-commands baru dalam daftar itu:

/var/log/bash_commands.log

Simpan dan mulai ulang/muat ulang rsyslog. (Rotasi pada akhirnya akan menimpa file log, jadi mungkin diperlukan lebih banyak pemikiran atau konfigurasi.)

Untuk melihat semua file yang telah diinstal oleh sebuah paket:

dpkg-query -L [package_name]

Jadi Anda bisa menjalankan sesuatu seperti itu saat menginstal perangkat lunak.

dpkg-query -L abc-package > /var/log/files_abc-package.log

Linux
  1. Bagaimana Cara Anda Mencatat Setiap Perintah yang Diketik?

  2. Bagaimana cara mengurutkan file ke dalam folder berdasarkan tipe file di bash (dengan perintah 'file')?

  3. Saya tidak sengaja mengetik kata sandi ke baris perintah bash

  1. Impor fungsi dan variabel ke Bash dengan perintah sumber

  2. Cara Mengubah Izin dan Pemilik melalui Command Line

  3. Bagaimana cara menyimpan + menutup file saat mengedit di bash?

  1. Cara Menghapus File dan Direktori di Linux dari Command Line

  2. Cara Memisahkan Dan Menggabungkan File Dari Baris Perintah Di Linux

  3. Cara membuat perintah alias berfungsi di skrip bash atau file bashrc