запретить две одинаковых сессии

Модераторы: dimbor, Модераторы разделов

dimbor
Ведущий рубрики
Сообщения: 1569
Статус: Подвинутый участник

Re: запретить две одинаковых сессии

Сообщение dimbor »

whoim писал(а):
21.07.2010 17:49
По диалогу: мне бы примерчик пользования.. Присвоил строку запуска окна переменной, пытаюсь в другом окне ее вывести - пусто..

Код: Выделить всё

res=`/usr/bin/nxclient --dialog yesno --caption "Есть запущенные сессии" --message "У Вас уже есть запущенные сессии. Сбросить их?" --class warning`;
 exec /usr/bin/nxclient --dialog ok --caption "Результат" --message "$res" --class info;


Зачем еще и nxclient на сервере использовать?

Вот пример:

Код: Выделить всё

nxdialog --dialog yesno --caption "Вопрос" --message "Хотите праздника?"
[ $? -eq 0 ] && { poweroff; nxdialog --dialog ok --caption "Предупреждение!" --message "Если админ бестолков, то он уже бежит к Вам!"; }
Спасибо сказали:
Djelf
Сообщения: 615
ОС: Гигтег+Цшт32

Re: запретить две одинаковых сессии

Сообщение Djelf »

dimbor писал(а):
21.07.2010 14:44
Djelf писал(а):
21.07.2010 12:55
cc inputfile -o nxuserlist
на nxuserlist владелец root и suid, все... будет делать nxserver --list $USER

2Djelf: Мой знакомый рейдер фабрику по производству костылей не знает, куда девать. Не интересует? Обещает быть бешеная прибыль. ;)
В смысле, зачем такие навороты? - Вся инфа о сессиях есть у юзера в каталогах .nx/C-*

Не... их и так уже скопилось, раздаю забесплатно... Ах да, я изначально был против! Но если есть желание сделать оригинально, почему бы не попытаться? Каждый костыль имеет право вырасти в экзоскелет!
Хотя... за то время что ушло на написание постов можно было бы и патчик к nxserver сообразить....
P.S. инфа о юзерах в .nx/C-* бывает недостоверной.
Спасибо сказали:
dimbor
Ведущий рубрики
Сообщения: 1569
Статус: Подвинутый участник

Re: запретить две одинаковых сессии

Сообщение dimbor »

Djelf писал(а):
21.07.2010 20:03
Хотя... за то время что ушло на написание постов можно было бы и патчик к nxserver сообразить....
P.S. инфа о юзерах в .nx/C-* бывает недостоверной.

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

Код: Выделить всё

get_sessdir4res()
# arg: session's smb mount port OR filename of printer/share descripion
# if share is nx-controlled and nxagent from his session are leave,
# then returns name of session dir (except dir of own sesson)
# functuion used if $ENABLE_SHARE_MULTIMOUNT=1 or $ENABLE_CUPS_SERVER_MODE=1 only
{
    nxlog "$FUNCNAME: starting with args \"$@\""
    [ "$1" -gt 0 2>/dev/null ] && digarg=1 || digarg=0
    AGENT_PIDS="$(ps -wo pid=,cmd= -C "nxagent" | cut -d" " -f1)"
    for sessdir in $USER_FAKE_HOME/.nx/C-*
    do
        [ "$sessdir" == "$USER_FAKE_HOME/.nx/C-$sess_id" ] && continue
        NODE_AGENT_PID=$(cat "$sessdir/pids/agent" 2>/dev/null)
        [ -z "$NODE_AGENT_PID" ] && continue
        [ -z "$(echo "$AGENT_PIDS" | grep $NODE_AGENT_PID)" ] && continue
        if [ "$digarg" = "1" ]; then
            curport="$(cat $sessdir/scripts/mport 2>/dev/null)"
            [ "$curport" = "$1" ] && { echo "$sessdir"; nxlog "$FUNCNAME: found sessdir $sessdir for mport = $1"; return; }
        else
            [ -f "$sessdir/scripts/$1" ] && { echo "$sessdir"; nxlog "$FUNCNAME: found sessdir $sessdir for filename = $1"; return; }
        fi
    done
    nxlog "$FUNCNAME: target sessdir not found"
}

И никаких рутовских прав, заметь.

Djelf писал(а):
21.07.2010 20:03
Каждый костыль имеет право вырасти в экзоскелет!

Эпически сказано!
Главное - правильно кормить.
Спасибо сказали:
whoim
Сообщения: 91
ОС: CentOS 5.4 X64

Re: запретить две одинаковых сессии

Сообщение whoim »

Зачем еще и nxclient на сервере использовать?

Знание - сила )
Спасибо!
Спасибо сказали:
Ответить