LINUX.ORG.RU

Автозагрузка скрипта при авторизации в Xfce для ubuntu

 


1

1

Всем привет!

Развернули терминальный сервер на ubuntu-20.04.3-desktop. Я сделал скрипт, который записывает RDP сессию пользователей при помощи ffmpeg:

mkdir -p /mnt/date +%d-%m-%Y

size=$(xrandr | grep ‘*’ | awk ‘{print $1}’)

ffmpeg -s $size -f x11grab -i $DISPLAY -vcodec h264 /mnt/«$(date +»%d-%m-%Y")«/»$(date +%R)"\ -\ $USER.mov

Сейчас задача сделать так, что бы он включался при авторизации в RDP сессии, рабочего стола xfce, и соответственно выключался после выхода из RDP сессии.

Подскажите:

  • куда можно разместить данный скрипт ?
  • нужно добавить что то в сам скрипт, вроде того - если rdp сессия активна, тогда выполняем … - или это не нужно добавлять в скрипт ?


Последнее исправление: p35shev (всего исправлений: 2)

Что у тебя за контора, в которой слежка за сотрудниками?

Можешь добавить в сам скрипт.

Проверка запущена ли RDP сессия
если запущена - запускаем ffmpeg в фоне
сохраняем PID
Проверяем активна ли RDP сессия
если не активно посылаем процессу ffmpeg сигнал завершения
возвращаемся к ожиданию RDP сессии
kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

Что у тебя за контора, в которой слежка за сотрудниками? - следим не за сотрудниками, а за подрядчиками))

«Проверка запущена ли RDP сессия» - подскажи, а как именно реализовать данную проверку ? погуглим, но информация выходит только по Windows, по Linux не могу найти

И что бы данная проверка была отдельна при авторизации каждого пользователя на терминальном сервере ?

p35shev
() автор топика
Ответ на: комментарий от p35shev

Можешь проверить банально по наличию запущенного процесса того рдп клиента, что установлен.

ps aux | grep имя_процесса > /dev/null

Как это использовать в цикле в баш погугли.

В выводе ps aux будут процессы всех пользователей, поэтому делай ещё один grep, но уже с именем пользователя от имени которого запущен скрипт.

Имя пользователя можно взять из переменной окружёния.

Ну либо разберись как увидеть только все процессы пользователя от имени которого запущен скрипт.

Но это все же проверка запущенности рдп клиента, он может быть и не подключен к серверу по рдп, а просто запущен.

Думаю подключение можно определить по параметрам с которыми он запущен.

Разбирайся.

Ну или в большинстве случаев запуск просто рдп клиента можно считать, что подключение есть.

В другой твоей теме я дал тебе ссылку на адвансед баг скриптинг гуид.

Изучай, пиши.

У тебя будет два цикла, первый делает проверку запущенности, если есть, входит во второй вложенный цикл, запускает ffmpeg с параметрами в фоне, сохраняет pid процесса в переменную и ждёт завершения рдп сессии, т.е. закрытие процесса рдп.

Делать проверку лучше с ожиданием, sleep.

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 1)

мож сначала почитать ман твоего RDP-сервера (их как минимум уже два, хотя и форки) ??
авось там есть хуки подключения/отключения клиента прям из коропки…

pfg ★★★★★
()
Последнее исправление: pfg (всего исправлений: 1)
Ответ на: комментарий от kostik87

терминальный сервер на ubuntu-20.04.3-desktop … записывает RDP сессию пользователей …

аккурат наоборот. следить на сервере за действия подключившихся по рдп клиентов. вполне естественная потребность серверо-держателя :)

тут есть такое, но в такие дебри не было потребюонсти лазить.
https://pub.freerdp.com/api/md__home_fbot_FreeRDP_server_proxy_modules_README.html

Currently supported hook events
Server
ServerPostConnect:  Called after a client has connected
ServerPeerActivate: Called after a client has activated
ServerChannelsInit: Called after channels are initialized
ServerChannelsFree: Called after channels are cleaned up
ServerSessionEnd:   Called after the client connection disconnected
pfg ★★★★★
()
Ответ на: комментарий от pfg

Вообще, они ничего не написал, кто как и куда подключается.

Но я понял, что есть LTSP сервер. К которому подключаются как-то, возможно даже по RDP.

Внутри RDP сессии к терминальному серверу Linux запускается XFCE.

И внутри этой RDP сессии идёт RDP подключение к другому серверу.

И вот внутри XFCE сессии он хочет запускать скрипт, который ждёт RDP подключения и записывает всё.

Но это как понял я.

Как на самом деле - вопрос к автору темы.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

RDP сервер на ubuntu, он же и есть терминальный сервер)

При чём тут Windows ?))

p35shev
() автор топика

Ты можешь добавить этот скрипт в systemd. Сначала поставь на него права chmod 744 myscript. Если он не с расширением sh, то добавь в начало скрипта #!/bin/bash. Ну короче, вот тебе статья, я думаю, разберёшься.

tiopl09
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.