2 votos

almacenar el comando actual ejecutado en un archivo separado

Quiero mantener un registro de todos los comandos que se ejecutan en un archivo de registro independiente (aparte de la historia), junto con otra descripción. Para lograr esto necesito saber como puedo recuperar actual comando ejecutar y almacenar en un archivo.

Escenario: En la actualidad, cada vez que ejecute el comando sudo pregunta por la razón, que me proporcionan. Y la razón es almacenado en el archivo de registro en mi directorio. Pero ahora quiero guardar el comando ejecutar junto con la razón y no soy capaz de encontrar la manera de hacer esto.

$ sudo touch file
Reason for sudo: creating new file test
[sudo] password for root: 

Como en el anterior, me desea almacenar el comando sudo touch file junto con la razón que proporcionen en un fichero cada vez que se ejecute un comando.

1voto

heemayl Puntos 21116

Puede utilizar una pequeña función para anular un comando del mismo nombre, añadir sus extensiones y, a continuación, ejecute el comando real por ejemplo, para sudo (asumiendo bash):

sudo () {
    read -p 'Reason for sudo: ' reason
    printf 'sudo %s : %s\n' "$*" "$reason" >>~/reason_file.txt
    command sudo "$@"
}

Puesto que en cualquier sesión de la consola de archivo de inicialización por ejemplo ~/.bashrc. Y, obviamente, usted puede modificar el cuerpo de la función para satisfacer su necesidad.

Ahora, cuando usted va a estar corriendosudo some_command, por encima de la función será ejecutar y hacer las operaciones definidas antes de que finalmente ejecutan sudo some_command con el real sudo binario externos.


Como una nota del lado, todos los proyectiles de la tienda de la sesión interactiva de la historia en un archivo separado, por ejemplo, para bash "s ~/.bash_history, zsh es ~/.histfile. Y el history builtin mandato será el guarda (y en el búfer) de la historia.

0voto

Navi Puntos 16

Gracias por las sugerencias. Logré esto usando un alias en mi .bashrc y un script de shell.

 alias sudo='bash $HOME/.sudolog'
 

Script $HOME/.sudolog

 #!/bin/bash

#Script to log the sudo commands used with reason.

##                                                                       ##
#LAST UPDATED ON 24 FEB 2019 16:30 IST#
##                                                                       ##

logfile="$HOME/sudo.log"
cmd="sudo $*"

date_time=`date +'%d/%m/%Y %H:%M:%S'` > /dev/null 2>&1
username=`whoami` > /dev/null 2>&1
read -p "Reason for sudo: " reason
eval $cmd
rtrn="$?"
echo "<date time> $date_time </date time>  <user> $username </user>  <command> sudo $* </command>  <reason> $reason </reason>  <return> $rtrn </return>"  >> "$logfile"
 

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: