¿Cuál sería la mejor manera de registrar el inicio de sesión, cierre de sesión y el usuario que está iniciando sesión en la mac? Tengo algunas máquinas que controlo desde el escritorio remoto. Quiero monitorear quién está iniciando sesión en ellos y a qué hora están cerrando sesión y también el usuario. Intenté con last pero el de BSD es diferente al de Linux (GNU) y no tan versátil. Necesito el registro semanalmente para poder ejecutar un cronjob que me envíe los registros de cada máquina.
Mi enfoque actual:
Hacer un script para registrar la actividad Copiar el script en cada máquina (37 máquinas) :( Luego ejecutar otro cronjob para enviar los registros a mis máquinas usando scp. ¿Estoy haciendo esto bien?
Esto es lo que hice:
Tengo un script de shell que quiero ejecutar al inicio de sesión así como al cierre de sesión.
Es algo así
#!/bin/bash
# Definir la ubicación del archivo de registro
LOG_FILE="/Users/kamabokogonpachiro/Desktop/logfile.log"
# Función para registrar el inicio de sesión
log_login() {
echo "$(date) - Usuario $1 inició sesión" >> "$LOG_FILE"
}
# Función para registrar el cierre de sesión
log_logout() {
echo "$(date) - Usuario $1 cerró sesión" >> "$LOG_FILE"
}
# Verificar si el script es llamado con un argumento de nombre de usuario
if [ "$1" ]; then
# Si el script se llama con "logout" como primer argumento, registrar el cierre de sesión
if [ "$1" = "logout" ]; then
log_logout "$2"
else
# De lo contrario, registrar el inicio de sesión
log_login "$1"
fi
fi
El script de inicio de sesión se guarda en ~/Library/LaunchAgents/com.user.login.plist
y el contenido es
Label
com.user.login.sh
ProgramArguments
/bin/bash
/Users/kamabokogonpachiro/Desktop/logfile.sh
login
$(whoami)
RunAtLoad
WorkingDirectory
/Users/kamabokogonpachiro/Desktop
Similarmente, el script de cierre de sesión se encuentra en ~/Library/LogoutAgents/com.user.logout.plist
y el contenido es
Label
com.user.logout
ProgramArguments
/Users/kamabokogonpachiro/Desktop/logfile.sh
logout
nombredeusuario
RunAtLoad
También hice launchctl load ...
.
Aún así, no están funcionando, el script de shell está marcado como ejecutable también. No sé qué me falta. ¿Está incorrecto mi enfoque? ¿Hay mejores maneras? Intenté con last
pero el de BSD es diferente al de Linux (GNU)
y no tan versátil.