Log peristiwa layar kunci

10

Masalah

Lihat tanggal & waktu yang tepat seorang pengguna mengunci dan membuka kunci stasiun kerjanya - menjalankan Fedora 18.

Pertanyaan

Apakah ada cara untuk mencatat peristiwa pengguna yang masuk dan keluar "layar kunci" pada fedora 18 (atau solusi linux umum)?

Mencoba

  1. Mencoba melihat /var/log/boot- tidak ada bantuan. Dan melihat /var/log/messagessaya menemukan pesan systemd-logind[xxx]: New session 140 of user YYY, tetapi tidak dapat menemukan acara layar kunci (gnome?).
  2. /var/log/audit/audit.logSudah pernah mencoba yang memiliki banyak pesan terkait PAM tentang semua jenis pengguna dan layanan, tetapi saya tidak begitu yakin apa yang harus dicari untuk menemukan aktivitas layar kunci.
tutuDajuju
sumber

Jawaban:

7

Berikut adalah solusi lain menggunakan "dbus-monitor". Aktivitas layar logging skrip bash kecil.

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
Alexander Dallakyan
sumber
Saya memasukkan ini ke dalam .shfile dan menambahkannya ke aplikasi startup Gnome.
Lakukan
4

Coba lihat /var/log/auth.log. Anda akan melihat beberapa pesan terkait dari PAM dan / atau aplikasi screensaver.

scai
sumber
Saya tidak punya /var/log/auth.log, saya punya /var/log/audit/audit.logyang memiliki banyak pesan terkait PAM tentang semua jenis pengguna dan layanan, tetapi saya tidak begitu yakin apa yang harus dicari untuk menemukan aktivitas layar kunci
tutuDajuju
Saya memiliki /var/log/auth.log dan tidak ada pesan dari PAM atau aplikasi screensaver yang terkait dengan peristiwa penguncian / penguncian.
ychaouche
4

Ya, sepertinya tidak masuk di mana pun untuk Anda. @tutuDajuju memiliki solusi yang baik jadi saya pikir saya akan mem- port-nya ke bash (dan menghapus ketergantungan pada penggunaan gnome, ini seharusnya bekerja terlepas dari lingkungan desktop) bagi mereka yang tertarik.
Jika Anda menjalankan ini di latar belakang dan menyalurkannya ke file log Anda akan memiliki log Anda.

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

Ini berjalan baik pada Fedora saya dengan KDE, tapi saya kira itu harus bekerja pada hal-hal lain seperti Debian dengan gnome dan lain-lain.
Anda mungkin memiliki masalah jika Anda greptidak mendukung -P(dalam hal ini Anda hanya dapat menggunakan sed).

Hashbrown
sumber
2

Mungkin sebaiknya jawab ini walaupun itu bukan jawaban saya (bos saya memberi saya solusi) untuk membantu orang lain dengan kebutuhan yang sama (atau pikiran yang ingin tahu).

tl; dr: Gunakan D-Bus untuk mendapatkan sinyal lockscreen yang diaktifkan / dinonaktifkan.

Tampaknya pesan D-Bus didukung secara luas oleh aplikasi GNOME, dan aplikasi ScreenSaver secara khusus , dan tampaknya aplikasi gnome-screensaver adalah aplikasi penguncian resmi untuk shell Gnome.

Jadi, untuk mengujinya, saya hanya menjalankan dbus-monitor dan mendapatkan respons:

dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'"

Saya telah menulis skrip python kecil untuk mencatat aktivitas ini ke dalam file:

#!/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
tutuDajuju
sumber
Jajak pendapat ? apa buang-buang sumber daya.
ychaouche
2

screensaver mana yang Anda gunakan? jika itu adalah xscreensaver, hidupkan opsi log dan cobalah untuk memantau file log.

http://www.jwz.org/xscreensaver/man1.html


sumber
Saya baru saja menulis dalam jawaban saya sendiri bahwa default di gnome shell adalah gnome-screensaver, yang sepertinya adalah apa yang saya gunakan (karena fedora menginstal gnome shell secara default) ...
tutuDajuju
2

Linux Mint 17.1. String dbus saya terlihat seperti ini:

 dbus-monitor --session "type='signal',path='/org/cinnamon/ScreenSaver'" 

atau mungkin terlihat seperti ini

dbus-monitor --session "type='signal',interface='org.cinnamon.ScreenSaver'"
Alexander Chzhen
sumber
2

Saya menggunakan XFCE dan XScreensaver. Dbus-monitor dan xscreensaver logging tidak berfungsi untuk saya. Jadi saya telah menemukan solusi lain. Saya harap ini juga bisa digunakan untuk orang lain.

Saya menjalankan perintah ini selama XFCE mulai:

/usr/bin/xscreensaver-command -watch |logger -t lockLogger

Kunci / buka acara dicatat /var/log/messagesdan dapat diambil kembali oleh

grep lockLogger /var/log/messages
eNca
sumber