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