Acquérir automatiquement le journal des opérations dans le terminal lors de la connexion à Linux

C'est le premier message depuis longtemps. Récemment, j'ai joué avec ubuntu mate installé sur gpd-micropc.

Contexte

Je cherchais un moyen d'obtenir automatiquement le journal des opérations dans le terminal. Au début, j'ai pensé que je devrais écrire une commande de script en .bashrc, mais cela ne semble pas fonctionner. .. J'ai trouvé divers articles que j'ai recherchés et qui m'ont été utiles. How do I log all input and output in a terminal session?

environnement

ubuntu-mate installé sur gpd micropc

OS: Ubuntu 19.10 eoan                                                                                                   
Kernel: x86_64 Linux 5.3.0-40-generic
Shell: bash
DE: MATE 1.22.2
CPU: Intel Celeron N4100 @ 4x 2.4GHz
GPU: Mesa DRI Intel(R) UHD Graphics 600 (Geminilake 2x6)-

Ce que j'ai fait

1. Créez le fichier de configuration rsyslog

Puisque le journal sera sorti avec la commande logger, créez un fichier de paramètres ci-dessous

vim /etc/rsyslog.d/bash.conf

/etc/rsyslog.d/bash.conf


local6.*    /var/log/commands.log

2. Ajoutez .bashrc

Ajoutez ce qui suit à .bashrc sous le répertoire personnel de l'utilisateur dont le journal des opérations doit être acquis.

vim /home/hoge(Utilisateur cible)/.bashrc

/home/hoge(Utilisateur cible)/.bashrc


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]"'

3. Redémarrez le service rsyslog

Redémarrez le service rsyslog

systemctl restart rsyslog.service 

4. Créez un fichier de paramètres pour la rotation des journaux

Créez un fichier de configuration à faire pivoter quotidiennement avec logrotate.d

vim /etc/logrotate.d/commands

/etc/logrotate.d/commands


/var/log/commands.log*
{
»-rotate 7
»-daily
»-dateext
»-missingok
»-notifempty
»-compress
»-postrotate
»-»-/usr/lib/rsyslog/rsyslog-rotate
»-endscript
»-su root root                                                                                                          
}

Vérification

Lisez .bashrc

source .bashrc 

Confirmez que le fichier est créé sous / var / log comme indiqué ci-dessous

ls -la /var/log/commands.log*
-rw-r-----1 syslog adm 4753 15 mars 19:34 /var/log/commands.log

/var/log/commands.log


Mar 15 19:34:29 hoge hoge: hoge@export [3457]: 2020-03-15 19:34:29 cd [0]
Mar 15 19:34:39 hoge hoge: hoge@export [3457]: 2020-03-15 19:34:37 source .bashrc  [0]
Mar 15 19:36:56 hoge hoge: hoge@export [3457]: 2020-03-15 19:36:56 ls -la /var/log/commands.log* [0]

Impressions

Je me demande si je peux me connecter. .. Après cela, je veux la sortie comme la commande de script. ..

Recommended Posts

Acquérir automatiquement le journal des opérations dans le terminal lors de la connexion à Linux
Comment se connecter automatiquement comme 1Password depuis CLI
Changer le message affiché lors de la connexion à Raspberry Pi
[Linux] Je souhaite connaître la date à laquelle l'utilisateur s'est connecté
Connectez-vous à un serveur distant avec SSH
Client de streaming Twitter à apprécier dans le terminal
Connectez-vous avec json en utilisant pygogo.
Qu'advient-il du journal d'accès lorsque le site Web est automatiquement accédé par sélénium-webdriver
Comment autoriser les utilisateurs nologin à se connecter sous Linux
Comment quitter lors de l'utilisation de Python dans Terminal (Mac)
Fonctionnement pratique du clavier Linux que je veux apprendre moi-même quand j'étais à l'école
Comment supprimer "(base)" qui apparaît dans le terminal lorsqu'Anaconda est installé sur Mac
Connectez-vous à l'écran de gestion fortigate (6.0) à partir de sélénium-essayez de vous déconnecter
Comment mettre à jour les informations utilisateur sur Django RemoteUserMiddleware login
[Django] Je souhaite me connecter automatiquement après une nouvelle inscription
Je n'arrive pas à me connecter à la page d'administration avec Django 3
Comment se connecter à AtCoder avec Python et soumettre automatiquement
La méthode minimale à retenir lors de l'agrégation de données avec Pandas
Une histoire qui n'a pas fonctionné lorsque j'ai essayé de me connecter avec le module de requêtes Python
Appuyez sur la commande echo dans le terminal Mac pour afficher Hello World
Mesures à prendre en cas d'opération suspecte dans la redirection HttpResponse
Développement LINEbot, je souhaite vérifier le fonctionnement dans l'environnement local
Paramètres à effectuer lors du démarrage du serveur Linux centos7
Essayez de vous connecter automatiquement à Netflix en utilisant python sur votre PC
Adieu l'invite de commande dans WSL, VSCode et Windows Terminal
J'ai fait une commande pour afficher un calendrier coloré dans le terminal
J'ai essayé de me connecter automatiquement à Twitter avec du sélénium (RPA, scraping)
Que faire lorsque le type de valeur est ambigu en Python?
Convertir automatiquement en fichier py lorsque le fichier ui est mis à jour par PySide
Obtenez l'adresse IPv4 attribuée à l'interface réseau dans le code (Linux)
J'ai essayé de créer un système pour acquérir automatiquement le guide des programmes → l'enregistrer dans le calendrier en un jour
Programmation pour combattre dans le monde ~ 5-5,5-6
Programmer pour combattre dans le monde 5-3
Programmation pour combattre dans le monde - Chapitre 4
Dans la commande python, python pointe vers python3.8
[linux] commande kill pour tuer le processus
Essayez Cython dans les plus brefs délais
Lorsque le nœud disparaît dans rqt_graph
Comment se connecter à Docker + NGINX
Programmation pour combattre dans le monde ~ 5-2
Utilisez Paints Chainer avec Selenium pour colorer automatiquement les images dans le répertoire
Que faire lorsque le résultat téléchargé via scrapy est en anglais
Comment masquer l'invite de commande lors de l'exécution de python dans Visual Studio 2015
[Linux] Une commande pour obtenir une liste des commandes exécutées dans le passé
Utilisez un raccourci pour activer ou désactiver le pavé tactile dans Linux Mint
Paramètres pour ouvrir et fermer automatiquement la fenêtre QuickFix lors de l'utilisation de errormaker.vim
Que faire lorsque l'avertissement "L'environnement est cohérent ..." apparaît dans l'environnement Anaconda
python Comment notifier automatiquement par téléphone lorsque le système tombe en panne
Il est pratique d'utiliser stac_info et exc_info lorsque vous souhaitez afficher la traceback dans la sortie du journal par journalisation.