Come posso registrare tutti gli input e output in una sessione terminale?


46

Come posso conservare i registri di tutto il lavoro svolto tramite il terminale? Ad esempio, voglio una registrazione di tutto il lavoro svolto sul database tramite terminale.


Anche questo è integrato in sudo.
Wilhelm Erasmus,

Ho aggiunto la mia risposta che puoi recensire
Mansur Ali

Risposte:


66

Quando sei pronto per iniziare a registrare un file di registro, digita:

script screen.log

Ora, fino a quando non si interrompe lo script, tutto l'input e l'output nel Terminale verranno archiviati in screen.log. Al termine, basta digitare:

exit

Il file screen.log verrà archiviato nella directory locale. Se si desidera reindirizzarlo, utilizzare un percorso assoluto come ~/screen.log. Questo farà esattamente quello che stai cercando.

Fonte: Guida di Ubuntu - Come registrare i comandi dei terminali


Ciao, grazie per la risposta. Ma funzionerà se accedo al database mysql dalla shell usando la seguente sequenza: - 1) script screen.log 2) mysql -u <utente> -p <database> 3) alcuni lavori sul database 4) esci; Vedo che il file screen.log è stato creato ma non contiene registri per il database. Condividerò il file al più presto. Grazie Ankt
Ankit,

2
dovrebbe funzionare con tutto ciò che viene eseguito nella console leggendo da "input standard" (di solito la tastiera) e scrivendo su output standard (di solito la finestra del terminale). Quindi dovrebbe includere il client da riga di comando mysql. La pagina man ( man script) menziona anche vi(editore) ...
Izzy

10

Potresti provare Asciinema . Oltre a registrare una registrazione, hai la possibilità di condividerla e incorporare il lettore nel tuo blog, articolo o in una conferenza.


6

Ho un modo migliore di usare syslog per registrare ogni comando della shell che può variare in base alla distribuzione di Linux ma il metodo rimarrà lo stesso

È necessario seguire alcuni passaggi:

Passaggio n. 1 (creazione del servizio Syslog)

# vim /etc/rsyslog.d/bash.conf

local6.*    /var/log/commands.log

Step # 2 (Apri bashrc e inserisci il comando sotto)

# vim /root/.bashrc

# Enable CLI Logging by Mansur 08-12-2016 
whoami="$(whoami)@$(echo $SSH_CONNECTION | awk '{print $1}')"export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$whoami [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"'

Ste # 3 (Riavvia servizio Syslog)

# /etc/init.d/rsyslog

Ecco un esempio di registro:

7 dic 22:13:00 validationdb2 mahasan: root @ export [13291]: tail -f /var/log/mysql/mysql.log [0]
7 dic 22:13:09 validationdb2 mahasan: root @ export [13291]: ls -lh [0]
7 dic 22:13:27 validationdb2 mahasan: root @ export [13291]: comando touch test [0]

tattica sfacciata !!!
Tom H

Ciao Mansur, potresti per favore spiegare cosa stai facendo con quei comandi, è difficile da capire, almeno per me.
Jasser,

Nel passaggio 1 sto nominando un servizio per la registrazione dei comandi che verrà utilizzato dal processo per inviare i log ad esso "local6" sarebbe il punto finale per il servizio per la registrazione nel passaggio 2 sto impostando le cose che effettivamente voglio "PROMPT_COMMAND = 'RETRN_VAL = $?" questa parte registrerà l'input dell'utente e "logger -p local6.debug" questo invierà il file di registro al servizio che registra i dati dei registri con il processo di aiuto syslog
Mansur Ali
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.