GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo registrar cada comando de shell en Linux

Pregunta :¿Cómo redirigir el historial de comandos de shell a Syslog?

Hay varios métodos para hacer esto. Puedes probar con cualquiera de los 3 métodos a continuación:

Método 1:a través del servicio rsyslog

Para usar rsyslog para registrar cada comando de shell, simplemente siga los pasos a continuación:

1. Cree un nuevo archivo de configuración rsyslog y defina la ruta del archivo de registro. Por ejemplo:/var/log/commands.log .

# vi /etc/rsyslog.d/bash.conf
local6.* /var/log/commands.log

2. Edite el ~/bashrc del usuario . Nota:debe editar el ~/bashrc de todos y cada uno de los usuarios que necesite dichos registros.

# vi ~/.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]"'

Por ejemplo:

[root@hostname ~]# cat ~/.bashrc | tail -n2
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]"'
[root@hostname ~]#

3. Reinicie el servicio rsyslog

# systemctl restart rsyslog

Todo listo. Vea el ejemplo de formato de registro a continuación:

[root@hostname ~]# date
Thu Apr 9 00:26:11 EDT 2020
[root@hostname ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.9 (Maipo)
[root@hostname ~]# tail -2 /var/log/commands.log
Apr 9 00:26:11 hostname root: [email protected] [1643]: date [0]
Apr 9 00:26:18 hostname root: [email protected] [1643]: cat /etc/redhat-release [0]
[root@hostname ~]# 

Método 2:a través de la opción bash shell

1. Agregue 'shopt -s syslog_history ' en el inicio de todo el sistema /etc/profile o en el archivo de inicialización personal ~/.bash_profile. Por ejemplo:

[root@hostname ~]# cat /etc/profile | grep shopt
shopt -s syslog_history

2. Cierre sesión y vuelva a iniciar sesión para reflejar esta opción.

3. Ejemplo de registro:

[root@hostname ~]# pwd
/root
[root@hostname ~]# date
Thu Apr 9 01:26:46 EDT 2020
[root@hostname ~]# tail -2 /var/log/messages
Apr 9 01:26:46 hostname -bash: HISTORY: PID=1345 UID=0 date
Apr 9 01:26:52 hostname -bash: HISTORY: PID=1345 UID=0 tail -2 /var/log/messages
[bob@hostname ~]$ tail -f /var/log/messages
Apr 9 01:26:45 hostname -bash: HISTORY: PID=1345 UID=0 pwd
Apr 9 01:26:46 hostname -bash: HISTORY: PID=1345 UID=0 date
Apr 9 01:26:52 hostname -bash: HISTORY: PID=1345 UID=0 tail -2 /var/log/messages

Método 3:a través de un comando de secuencia de comandos

Además, si solo desea iniciar sesión en una sola terminal, pruebe el comando 'script' como se muestra a continuación, también es fácil de usar y muy útil.

1. Para comenzar a iniciar sesión, simplemente ejecute:

# script /tmp/screen.log

2. Ahora puede iniciar sus comandos bash. Una vez terminado, puede salir:

# exit

Luego guardará toda la sesión en un archivo /tmp/screen.log

3. Verifique las salidas:

# cat /tmp/screen.log

Por ejemplo:

[root@hostname ~]# script /tmp/screen.log
Script started, file is /tmp/screen.log
[root@hostname ~]# date
Thu Apr 9 00:28:26 EDT 2020
[root@hostname ~]# whoami
root
[root@hostname ~]# exit
exit
Script done, file is /tmp/screen.log
[root@hostname ~]# cat /tmp/screen.log
Script started on Thu 09 Apr 2020 12:28:23 AM EDT
[root@hostname ~]# date
Thu Apr 9 00:28:26 EDT 2020
[root@hostname ~]# whoami
root
[root@hostname ~]# exit
exit
Script done on Thu 09 Apr 2020 12:28:42 AM EDT
[root@hostname ~]#


Linux
  1. ¿Cómo registrar cada comando escrito?

  2. Cómo cambiar Shell en Linux

  3. Cómo configurar Bash Shell restringido en Linux

  4. Cómo usar alias de shell en Linux

  5. ¿Cómo imprimir la salida del comando Linux en un archivo?

Cómo eliminar un directorio en Linux

Cómo ejecutar el comando / secuencia de comandos de Linux Shell en segundo plano

Comando fuente en Linux

Cómo ejecutar un comando de Linux cada X segundos para siempre

Cómo almacenar un comando de Linux como una variable en el script de Shell

Cómo usar el comando Declare en Linux Bash Shell