Comment enregistrer toutes les entrées et sorties dans une session de terminal?

46

Comment puis-je conserver des journaux de tout le travail effectué via un terminal? Par exemple, je veux un enregistrement de tout le travail effectué sur la base de données via un terminal.

Ankit
la source
Ceci est également construit dans sudo.
Wilhelm Erasmus
J'ai ajouté ma réponse que vous pouvez consulter
Mansur Ali

Réponses:

66

Lorsque vous êtes prêt à enregistrer un fichier journal, tapez:

script screen.log

Maintenant, jusqu'à ce que vous arrêtiez le script, toutes les entrées et sorties du terminal seront stockées dans screen.log. Lorsque vous avez terminé, tapez simplement:

exit

Votre fichier screen.log sera stocké dans le répertoire local. Si vous souhaitez le rediriger, utilisez un chemin absolu tel que ~/screen.log. Cela fera exactement ce que vous recherchez.

Source: Guide Ubuntu - Comment consigner les commandes de terminal

xlukasx
la source
Salut, merci pour la réponse. Mais cela fonctionnera-t-il si je me connecte à la base de données mysql à partir du shell en utilisant la séquence suivante: - 1) script screen.log 2) mysql -u <utilisateur> -p <base de données> 3) certains travaux sur la base de données 4) exit; Je vois que le fichier screen.log est créé mais il ne contient pas de journaux pour la base de données. Je partagerai le fichier dès que possible. Merci Ankt
Ankit
2
cela devrait fonctionner avec tout ce qui tourne dans la console en lisant depuis "l'entrée standard" (généralement votre clavier) et en écrivant sur la sortie standard (généralement votre fenêtre de terminal). Donc, il devrait inclure le client en ligne de commande mysql. La page de manuel ( man script) mentionne même vi(éditeur) ...
Izzy
10

Vous voudrez peut-être essayer Asciinema . En plus de faire un enregistrement, vous avez la possibilité de le partager et d'intégrer le lecteur dans votre blog, article ou conférence.

malade malade
la source
6

J'ai un meilleur moyen d'utiliser syslog pour consigner chaque commande shell, cela peut varier selon la distribution linux mais la méthode restera la même

Vous devez suivre quelques étapes:

Étape 1 (Créer un service Syslog)

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

local6.*    /var/log/commands.log

Étape # 2 (Ouvrez bashrc et entrez la commande ci-dessous)

# 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 (Redémarrez le service Syslog)

# /etc/init.d/rsyslog

Voici un exemple de journal:

Dec 7 22:13:00 validationdb2 mahasan: root @ export [13291]: tail -f /var/log/mysql/mysql.log [0]
7 déc. 22:13:09 validationdb2 mahasan: racine @ exportation [13291]: ls -lh [0]
7 déc. 22:13:27 validationdb2 mahasan: root @ export [13291]: commande de test du toucher [0]
Mansur Ali
la source
tactique effrontée !!!
Tom H
Salut Mansur, Pourriez-vous s'il vous plaît expliquer ce que vous faites avec ces commandes, c'est difficile à comprendre, du moins pour moi.
Jasser
À l'étape 1, je nomme un service de consignation des commandes qui sera utilisé par le processus pour lui envoyer des journaux. "Local6" serait le point final du service de consignation. = $? " cette partie enregistrera l'entrée de l'utilisateur et "logger -p local6.debug", ce qui enverra le fichier journal au service qui enregistre les données des journaux avec le processus d'aide syslog
Mansur Ali