Повторное подключение к терминальному серверу - Решение //

По итогам обсуждения вот в этом топике: http://www.itadvisor.ru/node/405, решения не нашлось.

Так как мне все равно необходимо было решить эту проблему, пришлось в меру сил и знаний выдумывать что-нибудь самому. 

Подсмотрев примерный вариант в теме http://www.itadvisor.ru/node/120, собрал для себя следующий пакет.

/etc/init.d/rdp_check 

---------------- 

#!/bin/sh
case $1 in
init)
echo "* * * * * $0" >> /tmp/crontab
crontab /tmp/crontab
;; 
*)
FILE=/tmp/rdpcount
RDP_RETRY_COUNT=5
[ -e $FILE ] || echo 0 > $FILE
cat /tmp/crontab | sed '$d' > /tmp/crontab
crontab /tmp/crontab

while true; do
if [ `ps | grep rdesktop | grep -v grep | wc -l` = 0 ] ; then
X=`cat $FILE`
echo $(($X+1)) > $FILE
if [ $X -gt $RDP_RETRY_COUNT ];
then
poweroff
else
killall Xorg
killall start-session
fi
fi
sleep 10
done

;;
esac
exit 0 

-----------------

/etc/rc5.d/S99rdp_check -> /etc/init.d/rdp_check

 

Скрипт каждые 10 секунд проверяет запущенный процесс rdesktop и перезапускает его в случае необходимости.

Также заодно выключает клиент, если после 5 перезапусков вход не был выполнен. Это для пользователей, которые включили клиент и забыли про него.

 

Прошу указать на возможности оптимизации. 

Если кому-то годится и такой вариант, прошу обращаться по email ppavel@pisem.net - вышлю готовый пакет.

Спасибо Petr за идею. 


В стандартной

В стандартной сборке типа есть проверка, но она действует 1-2 мин. (примерно).

Мне бы подошел вариант когда скрипт проверяет не 50 сек, а например 3-5 мин, время нужное для перезагрузки терминального сервера.