잠금 화면 이벤트 로깅


10

문제

Fedora 18을 실행하는 사용자가 자신의 워크 스테이션을 잠 그거나 잠금 해제하는 정확한 날짜 및 시간을 확인하십시오.

질문

fedora 18 (또는 일반적인 리눅스 솔루션)에서 사용자가 "잠금 화면"에 들어오고 나가는 이벤트를 기록 할 수있는 방법이 있습니까?

시도

  1. 보고 싶었습니다 /var/log/boot-도움이되지 않습니다. 그리고 /var/log/messages메시지를 찾았 systemd-logind[xxx]: New session 140 of user YYY지만 잠금 화면 (그놈?) 이벤트를 찾을 수 없습니다.
  2. 보고 시도 /var/log/audit/audit.log하는 사용자와 서비스의 모든 종류에 대한 PAM 관련 메시지를 많이 가지고,하지만 난 정말 확실 잠금 화면 활동을 찾기 위해 무엇을 찾아야할지 모르겠어요

답변:


7

다음은 "dbus-monitor"를 사용하는 다른 솔루션입니다. 작은 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

나는 이것을 .sh파일에 넣고 Gnome의 시작 응용 프로그램에 추가했습니다. 이 주석에 말씀합니까, 들으
aross

4

을 살펴보십시오 /var/log/auth.log. PAM 및 / 또는 스크린 세이버 응용 프로그램의 관련 메시지가 표시됩니다.


나는 더없는 /var/log/auth.log내가해야합니까, /var/log/audit/audit.log사용자와 서비스의 모든 종류에 대한 PAM 관련 메시지를 많이 가지고있는,하지만 잠금 화면 활동을 찾고있는 내가보기에 정말 있는지 무엇을 모르겠어요
tutuDajuju

/var/log/auth.log가 있고 잠금 / 잠금 이벤트와 관련된 PAM 또는 화면 보호기 앱의 메시지가 없습니다.
ychaouche '12

4

예, 그것은 당신을 위해 어디에도 기록되지 않은 것 같습니다. @tutuDajuju는 좋은 해결책을 가지고 있기 때문에 관심있는 사람들을 위해 bash (및 gnome 사용에 대한 의존성을 제거하면 데스크탑 환경에 관계없이 작동해야 함)로 이식 할 것이라고 생각했습니다.
백그라운드에서 이것을 실행하고 로그 파일로 파이프하면 로그가 생깁니다.

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

이것은 KDE를 사용하여 Fedora에서 정상적으로 실행되었지만 gnome et cetera가있는 Debian과 같은 다른 작업에서는 작동해야한다고 생각합니다. 지원하지 않는
경우 문제가있을 수 있습니다 (이 경우을 사용할 수 있음 ).grep-Psed


2

같은 요구 (혹은 호기심)를 가진 다른 사람들을 돕는 것은 나의 대답 (나의 상사가 해결책을 제공하지는 않았지만)에도 대답 할 수 있습니다.

tl; dr : D-Bus를 사용하여 잠금 화면의 활성화 / 비활성화 신호를 얻습니다.

보인다 D-버스 메시징 널리 GNOME 응용 프로그램에 의해 지원되고, 화면 보호기 응용 프로그램은 특히 , 보인다 그놈 - 화면 보호기 응용 프로그램은 그놈 쉘의 공식 잠금 응용 프로그램입니다.

그래서 그것을 테스트하기 위해 dbus-monitor를 실행 하고 응답을 얻었습니다.

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

이 활동을 파일에 기록하기 위해 작은 파이썬 스크립트를 작성했습니다.

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

설문 조사? 자원 낭비 야
ychaouche

2

어떤 화면 보호기를 사용하고 있습니까? xscreensaver 인 경우 로그 옵션을 켜고 로그 파일을 모니터하십시오.

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


방금 gnome shell의 기본값이 gnome-screensaver라고 썼습니다. (페도라는 기본적으로 gnome shell을 설치하기 때문에) ...
tutuDajuju

2

리눅스 민트 17.1. 내 dbus 문자열은 다음과 같습니다.

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

또는 다음과 같이 보일 수 있습니다

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

2

XFCE와 XScreensaver를 사용하고 있습니다. dbus-monitor 나 xscreensaver 로깅이 작동하지 않습니다. 그래서 다른 해결책을 찾았습니다. 다른 사람들도 사용할 수 있기를 바랍니다.

XFCE 시작 중에이 명령을 실행합니다.

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

잠금 / 잠금 해제 이벤트는에 기록되며 다음 /var/log/messages으로 검색 할 수 있습니다.

grep lockLogger /var/log/messages
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.