1 votos

Crear un script de inicio de sesión / cierre de sesión en Mac.

¿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.

0voto

Steve Evans Puntos 155

utmpx - base de datos de contabilidad de usuario

Si los métodos last y log en la pregunta duplicada no son suficientes, considere copiar el archivo /var/run/utmpx de cada cliente y examinar su contenido en su computadora local.

Este debería ser un enfoque más confiable que los trabajos de launchd y los archivos de registro personalizados.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X