LINUX

Shell Script para verificar el inicio de sesión del usuario

En este tutorial, le mostramos un script de shell para verificar el inicio y cierre de sesión del usuario. Este script de shell envía un correo electrónico con información sobre cada usuario que inicia y cierra sesión en el servidor.

Esto ayuda al administrador del sistema a conocer el inicio y cierre de sesión de los usuarios en el servidor con fines de supervisión.

Shell Script Check Inicio de sesión de usuario

Esta secuencia de comandos muestra la hora de inicio y cierre de sesión de cada usuario y envía un correo electrónico. El script usa el último comando en Linux para obtener los resultados.

#!/bin/bash
subject="New login on $(hostname -f)"
email="test@linoxide.com"

while true; do

LASTLOGIN=`last | head -1`

if [ x"$PREVLOGIN" = "x" ]; then

PREVLOGIN=$LASTLOGIN

else

if [ "$LASTLOGIN" != "$PREVLOGIN" ];
then
#echo "$LASTLOGIN" | mail -s "$subject" "$email"

echo "$LASTLOGIN $subject"

PREVLOGIN=$LASTLOGIN
fi
fi
sleep 1
done

Salida de secuencia de comandos

bobbin@linoxide:/$ ./lastlogin.sh
bobbin pts/4 :0.0 Tue Feb 26 15:54 still logged in New login on linoxide.lviv.example.com
bobbin pts/4 :0.0 Tue Feb 26 15:54 - 15:54 (00:00) New login on linoxide.lviv.example.com
bobbin pts/4 :0.0 Tue Feb 26 15:54 still logged in New login on linoxide.lviv.example.com
bobbin pts/4 :0.0 Tue Feb 26 15:54 - 15:54 (00:00) New login on linoxide.lviv.example.com
^C

Presionando ‘CTRL + C’ para salir del script.

Cómo funciona este script de shell

#Variable para establecer el asunto del correo electrónico

asunto = «Nuevo inicio de sesión en $ (nombre de host -f)»

#dirección de correo electrónico

email = «test@linoxide.com»

#Para ejecutarse como demonio, esto siempre será falso.

mientras sea cierto; hacer

# Tomamos la última línea de la salida del último comando. El último comando muestra los últimos inicios / cierres de sesión, el más nuevo en la parte superior. Dirígete a -1 para tomar la primera línea.

LASTLOGIN = `último | cabeza -1`

#compare si el valor anterior está vacío, para evitar enviar correos electrónicos al reiniciar.

si [ x»$PREVLOGIN» = «x» ]; entonces

#si el valor anterior está vacío: escriba en el valor anterior la última línea actual con inicio de sesión.

PREVLOGIN = $ LASTLOGIN

#si el valor anterior no está vacío, haga lo siguiente:

demás

#compare si el valor anterior y el último valor son iguales, si no, haga lo siguiente:

si [ «$LASTLOGIN» != «$PREVLOGIN» ];

#No comente esta línea si desea recibir correos electrónicos. Primero, hacemos eco de la última línea de inicio de sesión, después de redirigirlo al comando de correo, comando de correo para enviar correos electrónicos, -s para especificar el asunto, último correo electrónico de grupo a dónde enviar.

entonces
#echo «$ LASTLOGIN» | mail -s «$ asunto» «$ correo electrónico»

# esta línea solo para escribir en el resultado de la terminal.

echo «$ LASTLOGIN $ asunto»

#si se envía un correo electrónico, escribimos al valor anterior valor actual, por lo que se enviará el correo electrónico solo en la nueva entrada.

PREVLOGIN = $ LASTLOGIN

#finish of if loop, si la entrada anterior es la misma que la última, no es necesario hacer nada.

fi

# final del primer bucle if.

fi

#duerme 1 segundo, no hacer nada, no usar CP.

dormir 1

#finish of while loop.

hecho

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar