Aquí hay otra solución usando "dbus-monitor". Un pequeño script bash registrando la actividad de la pantalla.
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
Intenta echar un vistazo a /var/log/auth.log
. Debería ver algunos mensajes relacionados de PAM y/o la aplicación de protector de pantalla.
Sí, no parece estar registrado en ningún lado para usted. @tutuDajuju tiene una buena solución, así que pensé en portarla a bash (y eliminar la dependencia del uso de gnome, esto debería funcionar independientemente del entorno de escritorio) para aquellos que estén interesados.
Si tiene esto ejecutándose en segundo plano y lo canaliza a un archivo de registro, tendrá su registro.
#!/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
Esto funcionó bien en mi Fedora con KDE, pero supongo que debería funcionar en otras cosas como Debian con gnome, etcétera.
Puede tener problemas si su grep
no es compatible con -P
(en cuyo caso puede usar sed
).