GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Sperrbildschirmereignisse protokollieren

Hier ist eine andere Lösung mit "dbus-monitor". Eine kleine Bash-Skript-Protokollierungsbildschirmaktivität.

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

Versuchen Sie, einen Blick auf /var/log/auth.log zu werfen . Sie sollten einige zugehörige Meldungen von PAM und/oder der Bildschirmschoner-Anwendung sehen.


Ja, es scheint nirgendwo für Sie protokolliert zu sein. @tutuDajuju hat eine gute Lösung, also dachte ich, ich würde sie für diejenigen, die daran interessiert sind, auf Bash portieren (und die Abhängigkeit von der Verwendung von Gnome entfernen, dies sollte unabhängig von der Desktop-Umgebung funktionieren).
Wenn Sie dies im Hintergrund laufen lassen und es an eine Protokolldatei weiterleiten, haben Sie Ihr Protokoll.

#!/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

Dies lief gut auf meinem Fedora mit KDE, aber ich denke, es sollte auf anderen Dingen wie Debian mit Gnome und so weiter funktionieren.
Möglicherweise haben Sie Probleme, wenn Ihr grep unterstützt -P nicht (in diesem Fall können Sie einfach sed verwenden ).


Linux
  1. Deaktivieren Sie die Anmeldung mit dem Root-Konto

  2. Ssh – Ssh-Zugriffsversuche protokollieren?

  3. Nicht blockierendes Linux-FIFO (On-Demand-Protokollierung)

  4. Protokollieren von VMStat-Daten in einer Datei

  5. Was bedeuten Perf-Cache-Ereignisse?

Handbuch für MySQL-Ereignisse und Ereignisplaner

Aktivieren Sie die Protokollierung von Haproxy in rsyslog

Postfix – Aktivieren Sie die Protokollierung des E-Mail-Betreffs im Maillog

Vollständiges Handbuch zur Linux-Protokollierung

Wie aktiviere ich die erweiterte Protokollierung in Exim?

Kann ich vi-Aktivitäten protokollieren?