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
Каждый костыль имеет право вырасти в экзоскелет!
Эпически сказано!
Главное - правильно кормить.