Как отслеживать, когда каждый пользователь активно использует графический интерфейс в Ubuntu?

В вашем глобальном разделе добавьте:

restrict anonymous = 2

и изменить разрешение гостей, поскольку это отменяет анонимное ограничение:

usershare allow guests = no
2
06.12.2020, 00:11
2 ответа

Возможно, для этого используется dbus . Это механизм связи между разрозненными задачами, который является очень общим и поэтому довольно сложным в использовании. Вы должны искать события, называемые сигналами , отправленные по шине такими вещами, как демон systemd logind и заставка gnome.

Существует по крайней мере 3 разные библиотеки C для доступа к шине и еще несколько управляемых библиотек Python поверх них. И есть несколько простых интерфейсов командной строки -, которых должно быть достаточно, чтобы написать сценарий оболочки для извлечения данных. Например,

dbus-monitor --system

(вам может понадобитьсяsudo)будет работать постоянно, показывая вызовы и события. Ищите строфы, начинающиеся signal, которые имеют path=/org/freedesktop/login1.... Они будут содержать сложным образом информацию о том, когда кто-то входит в систему или выходит из нее, или когда пользователь наseat0(основной консоли )меняется, или когда дисплей блокируется из-за бездействия.

systemd создал собственную альтернативную команду:

sudo busctl monitor

, который предоставляет информацию в другом формате. Существует также gdbus monitor..., которому нужно больше аргументов, чтобы сказать, что слушать.

В качестве альтернативы вы можете попробовать использовать в каждом входе какое-то время -средство отслеживания для рабочих листов, такое как отслеживать (, о котором я ничего не знаю ), а затем объединять информацию.

2
18.03.2021, 22:48

loginctlпредоставит вам список session-idи пользователей. Оттуда вы можете использовать loginctl show-session <session-id>, и вы увидите Type=x11или Type=waylandдля этих сеансов.

Вот пример:

$ loginctl
SESSION  UID USER SEAT  TTY  
     19 1000 stew       pts/2
      2 1000 stew seat0 tty2 
     20 1000 stew seat0 tty6

3 sessions listed.
$ loginctl show-session 19 -p Type
Type=tty
$ loginctl show-session 2 -p Type
Type=x11
$ loginctl show-session 20 -p Type
Type=tty

В этом случае я вошел в систему на этой машине через ssh, а также через два TTY. Один из TTY работает под управлением X11.

Это не лог, но если периодически опрашивать его,вы можете создать журнал с ним.

0
18.03.2021, 22:48

Теги

Похожие вопросы