Consultez la date et l'heure exactes qu'un utilisateur verrouille et déverrouille son poste de travail - exécutant Fedora 18.
Existe-t-il un moyen de connecter un événement d'un utilisateur entrant et sortant de "écran verrouillage" sur Fedora 18 (ou une solution générale Linux)?
/var/log/boot
- Pas d'aide. Et en regardant /var/log/messages
J'ai trouvé le message systemd-logind[xxx]: New session 140 of user YYY
, mais je n'ai pas pu trouver l'événement de l'écran de verrouillage (Gnome?)./var/log/audit/audit.log
qui a beaucoup de messages liés à PAM sur toutes sortes d'utilisateurs et de services, mais je ne suis pas vraiment sûr de savoir quoi rechercher l'activité de verrouillageVoici 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
Oui, cela ne semble pas être enregistré n'importe où pour vous. @ Tutudajuju a une bonne solution Donc, je pensais que je l'aurais de la porter pour bash (et supprimer la dépendance à l'aide de Gnome, cela devrait fonctionner indépendamment de l'environnement de bureau) pour ceux qui sont intéressés.
[.____] Si vous rencontrez cela en arrière-plan et conduisez-le à 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 couru bien sur ma Fedora avec KDE, mais je suppose que cela devrait travailler 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
).
Essayez de regarder /var/log/auth.log
. Vous devriez voir des messages associés de PAM et/ou de l'application Screensaver.
J'utilise xfce et xscreensaver. Les DBus-Monitent que ni la journalisation XScreensaver ne fonctionne pas pour moi. J'ai donc trouvé une autre solution. J'espère que ce sera utilisable pour les autres personnes aussi.
J'exécute cette commande pendant xfce start:
/usr/bin/xscreensaver-command -watch |logger -t lockLogger
Les événements de verrouillage/de déverrouillage sont connectés au /var/log/messages
et peut être récupéré par
grep lockLogger /var/log/messages
Linux Mint 17.1. My DBus String ressemble à ceci:
dbus-monitor --session "type='signal',path='/org/cinnamon/ScreenSaver'"
ou ça peut ressembler à ceci
dbus-monitor --session "type='signal',interface='org.cinnamon.ScreenSaver'"
Pourrait aussi bien répondre à cela bien que ce ne soit pas ma réponse (mon patron m'a fourni la solution) pour aider les autres avec le même besoin (ou des esprits curieux).
tL; DR: Utilisez D-Bus pour obtenir des signaux activés/désactivés par Lockscreen.
Il semble que D-bus Messagerie est largement pris en charge par Gnome Apps, et l'application Screensaver spécifiquement , et il semble que L'application Gnome-Screensaver est l'application de verrouillage officielle pour Gnome Shell.
Donc, pour le tester, je viens de courir dbus-moniteur et obtenez la réponse:
dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'"
J'ai écrit un petit python script pour enregistrer cette activité dans un fichier:
#!/usr/bin/env python
from datetime import datetime
import os
import pwd
import subprocess
import time
LOG_FILE = os.path.expanduser('~/hours_log.csv')
cmd = subprocess.Popen(["dbus-monitor \"type='signal',interface="
"'org.gnome.ScreenSaver'\""], Shell=True,
stdout=subprocess.PIPE)
running = 0
while 1:
time.sleep(0.1)
if running:
output = cmd.stdout.readline()
status = 'unlocked' if 'true' in output else 'locked'
new_line = "{time} {user} {status} the screen\n".format(
time=datetime.now().ctime(),
user=pwd.getpwuid(os.getuid())[0],
status=status
)
with open(LOG_FILE, 'a') as f:
f.write(new_line)
running = 0
line = cmd.stdout.readline()
if "ActiveChange" in line and 'org.gnome.ScreenSaver' in line:
running = 1
quel économiseur d'écran utilisez-vous? S'il s'agit de xscreensaver, allumez les options du journal et essayez de surveiller le fichier journal.