Bash - Activité des utilisateurs

Ce script est à mettre dans la crontab

#!/bin/bash

# Fichier pour les logs
ACTIVITY_LOG_FILE="/opt/activity_log.txt"

# Destinataires
TO_EMAIL="[email protected] [email protected]"

# Expéditeur
FROM_EMAIL="[email protected]"

# Serveur SMTP
SMTP_SERVER="mail.domain.company.org"

# Fonction mail
send_email() {
subject="$1"
body="$2"

printf "%b" "$body" | mailx -v -s "$subject" -S smtp="$SMTP_SERVER" -S from="$FROM_EMAIL" "$TO_EMAIL"
}

# La liste de tous les user de /home
users_list=($(ls /home))

# Dernière connexion/déconnexion pour chaque user et enregistrer dans le fichier
echo -e "===================================================================" > "$ACTIVITY_LOG_FILE"
echo -e "== INFORMATIONS ACTIVITE UTILISATEURS SUR $HOSTNAME" >> "$ACTIVITY_LOG_FILE"
echo -e "===================================================================" >> "$ACTIVITY_LOG_FILE"

# Parcourir la liste des users
for user in "${users_list[@]}"; do
echo -e "\n----------------------------------------------------------------" >> "$ACTIVITY_LOG_FILE"
echo -e " Informations pour l'utilisateur $user :" >> "$ACTIVITY_LOG_FILE"
echo -e "----------------------------------------------------------------" >> "$ACTIVITY_LOG_FILE"

# Informations commande w
echo -e "Commande w - $(date) " >> "$ACTIVITY_LOG_FILE"
w -h "$user" >> "$ACTIVITY_LOG_FILE"

# Informations commande last
echo -e "\nCommande last :" >> "$ACTIVITY_LOG_FILE"
last -n 5 "$user" >> "$ACTIVITY_LOG_FILE"

# Afficher les 10 lignes de l'history
echo -e "\nCommande history :" >> "$ACTIVITY_LOG_FILE"
history_file="/home/$user/.bash_history"
if [ -f "$history_file" ]; then
tail -n 10 "$history_file" >> "$ACTIVITY_LOG_FILE"
else
echo "Aucun fichier d'historique trouvé pour $user." >> "$ACTIVITY_LOG_FILE"
fi
done

# Envoi du mail
subject="$HOSTNAME : ACTIVITE UTILISATEURS"
body=$(cat "$ACTIVITY_LOG_FILE")

send_email "$subject" "$body"

# Supprimer le fichier log après l'envoi du mail
rm "$ACTIVITY_LOG_FILE"

Documentation

RTFM

> Partager <