GNU/Linux >> Tutoriels Linux >  >> Linux

Journalisation des événements d'écran de verrouillage

Voici une autre solution utilisant "dbus-monitor". Une petite activité d'écran de journalisation du script bash.

exit_report(){
echo "$(date) Monitoring Terminated."
}
trap "exit_report; exit;" 0

lockmon() {
adddate() {
    while IFS= read -r line; do
      echo "$(date) $line" | grep "boolean" | sed 's/   boolean true/Screen Locked/' | sed 's/   boolean false/Screen Unlocked/'
    done
}
echo "$(date) Monitoring Started."
dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'" | adddate

}

lockmon >> lock_screen.log

Essayez de jeter un oeil à /var/log/auth.log . Vous devriez voir des messages connexes de PAM et/ou de l'application d'économiseur d'écran.


Oui, il ne semble pas être connecté n'importe où pour vous. @tutuDajuju a une bonne solution, j'ai donc pensé la porter sur bash (et supprimer la dépendance à l'utilisation de gnome, cela devrait fonctionner quel que soit l'environnement de bureau) pour ceux qui sont intéressés.
Si vous l'exécutez en arrière-plan et que vous le redirigez vers un fichier journal, vous aurez votre journal.

#!/bin/bash

#prints out, among other things;
#      string "org.kde.screensaver"
#transform it to 'org.kde.screensaver'
service=$(\
    dbus-send \
        --session \
        --dest=org.freedesktop.DBus \
        --type=method_call \
        --print-reply \
        /org/freedesktop/DBus org.freedesktop.DBus.ListNames \
    | grep -o '[^"]*.screensaver'
)

#prints out, among other things;
#method bool org.freedesktop.ScreenSaver.SetActive(bool e)
#transform it to 'org.freedesktop.ScreenSaver'
interface=$(
    qdbus \
        $service /ScreenSaver \
    | grep -oP '[^ ]*(?=.SetActive)'
)

path='/ScreenSaver'

#monitor it with a while loop
dbus-monitor "type='signal',interface='$interface',member='ActiveChanged',path='$path'" \
| while read -r line; do
    #ignore the metadata and pull the 'boolean <true/false>' line
    read line

    #check if it is set to true
    if echo $line | grep -q 'true'; then
        echo "Locked at $(date)"
    else
        echo "Unlocked at $(date)"
    fi
done

Cela a bien fonctionné sur mon Fedora avec KDE, mais je suppose que cela devrait fonctionner sur d'autres choses comme Debian avec gnome et cetera.
Vous pouvez avoir des problèmes si votre grep ne prend pas en charge -P (auquel cas vous pouvez simplement utiliser sed ).


Linux
  1. Linux - Comprendre la connexion Linux ?

  2. Vérification des référentiels Linux et de la journalisation

  3. Journalisation des données VMStat dans un fichier

  4. Haproxy ne se connecte pas avec rsyslog

  5. Événements inotify manquants (dans le répertoire .git)

Guide des événements MySQL et du planificateur d'événements

Postfix - Activer la journalisation du sujet de l'e-mail dans le journal de messagerie

Guide complet de journalisation Linux

Comment activer la journalisation étendue dans Exim ?

Afficher le journal des événements de Mitmproxy sous Linux

Puis-je enregistrer l'activité vi ?