понедельник, 22 января 2018 г.

Терминальный Linux сервер, организация контроля пользователей

В предыдущих постах здесь и здесь, я обращался к теме установки и настройки терминального сервера на базе Debian Linux. Иногда (почти всегда) у руководства возникает желание иметь возможность получить ответ на вопрос: "а чем собственно занимается сотрудник в рабочее время?"
Реализации этой возможности и посвящена данная статья.

Постановка задачи:

Необходимо, чтобы в домашний каталог ответственного пользователя (у меня создан специальный пользователь control), складывались скриншоты рабочего стола пользователей, за которыми осуществляется контроль(для каждого пользователя отдельная папка).

Реализация:

Из под рута создаем файл автозагрузки, который обеспечивает разрешение на взаимодействие, для нашего ответственного пользователя с X сессиями других пользователей.
touch /etc/xdg/autostart/xhost.desktop
mcedit /etc/xdg/autostart/xhost.desktop
помещаем следующее содержимое:
[Desktop Entry]
Name=Xhost
Comment=Unlok X session
Exec=xhost local:control
#Icon=
Terminal=false
Type=Application
Categories=ConsoleOnly;Utility;;XSystem;
Keywords=console;
Чтобы не иметь в дальнейшем граблей с правами делаем из под рута:
su control
(здесь и далее control меняем на вашего ответственного пользователя)
cd
mkdir screens
mkdir .scripts
touch .scripts/screenList.txt
touch .scripts/screenshot.sh
chmod +x .scripts/screenshot.sh
В файлике screenList.txt хранятся контролируемые пользователи, каждый пользователь с новой строки(следить за отсутствием пробелов до и после). в файл screenshot.sh помещаем следующее содержимое:
#!/bin/sh
List=/home/control/.scripts/screenList.txt
screenDir=/home/control/screens
DATE=`date '+%Y-%m-%d %H:%M:%S'`
for i in $(awk '{print $0}' "$List");do
    DSPL=$(ps -u $i l|awk ' /'Xorg'/ {print $14}')
    if ! [ -d "$screenDir"/"$i" ]; then
        mkdir "$screenDir"/"$i"
    fi
    if [ -n "$DSPL" ]; then
#  DISPLAY=$DSPL scrot "$screenDir"/"$i"/"$DATE".png
        DISPLAY=$DSPL import -window root "$screenDir"/"$i"/"$DATE".jpg
    fi
done
Сохраняем, идем в crontab:
crontab -e
прописываем запуск скрипта с нужным интервалом, у меня каждую минуту:
*/1 8-19 * * 1-5 /root/screenshot.sh
Дело сделано.
как можно видеть из текста скрипта я опробовал 2 утилиты для создания скриншотов  scort и imagemagick
в Debian они установлены по умолчанию, в случае отсутствия необходимо установить стандартным способом, остановился на imagemagick - он позволяет делать .jpg

Комментариев нет:

Отправить комментарий