список юзеров на класике (прошу ногами не бить)

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
tsaregorodtsev vitaly
Сообщения: 4
Зарегистрирован: 23 мар 2005, 14:15

список юзеров на класике (прошу ногами не бить)

Сообщение tsaregorodtsev vitaly » 14 апр 2005, 16:37

Добрый всем день.

Факи смотрел, поиск искал, ни ответа ни намека не нашел.
Прошу не пинать ногами.

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

Помню раньше у класика получить список юзеров было невозможно, как ситация обстоит сейчас?

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

Может можно пошаманить над процессами FB на сервере и получить имена? Клиенты напианы под Win.

Спасибо.

Лысый
Сообщения: 177
Зарегистрирован: 08 ноя 2004, 08:20

Сообщение Лысый » 16 апр 2005, 12:43

У себя на FB 1.5.2 сделал так:
1. Создал табличку InUse(username);
2. Вызываю events, клиенты ловят его и пишут себя в табличку;
3. В результате все живые клиенты должны откликнуться.
Само собой это вариант для приложения. Пользователи подключенные ч/з прочие средства видны не будут.

tsaregorodtsev vitaly
Сообщения: 4
Зарегистрирован: 23 мар 2005, 14:15

Сообщение tsaregorodtsev vitaly » 18 апр 2005, 13:20

Спасибо, это и так ясно что можно опрашивать юзеров на предмет логина.

Никакого другого способа, например через API в FB Classic, нету чтобы из процессов в *NIX получить имена юзверей подключенных к FB серверу?

Tchamlay_Oleg
Сообщения: 23
Зарегистрирован: 27 апр 2005, 12:40

Сообщение Tchamlay_Oleg » 28 апр 2005, 05:16

C консоли linux
------------
Для получения IP адресов клиентских машин подключенных к Firebird я делаю так:

netstat -Cpn|grep fb_inet_serve|sort -k 45,69

-------------
Для выявления "оторвавшихся" соединений, с запуском ps, пользуюсь скриптом такого содержания:
#!/bin/bash

st=`top -b -n 1 |grep fb_inet_serve|grep -v grep|awk '{print $1}'`
#st=`top -b -n 1 |grep fb_inet_server|awk '{print $1}'`
sn=`netstat -Cpn|grep fb_inet|grep ESTABLI|awk '{print $7}'|awk -F/ '{print $1}'`
sRes=

#echo $st
#echo $sn

for i in $st ; do
flag=0
for j in $sn ; do
if [ $i = $j ] ; then
flag=1
fi
done
if [ $flag = 0 ] ; then
echo $i - no found SOCKET !
sRes="$sRes -p $i"
# else
# echo $i - OK
fi
done

echo Result: $sRes

if [ ! "$sRes" = "" ] ; then
top -Ccd1 $sRes
fi

tsaregorodtsev vitaly
Сообщения: 4
Зарегистрирован: 23 мар 2005, 14:15

Сообщение tsaregorodtsev vitaly » 28 апр 2005, 16:24

Список IP это не вызывает сложностей... Вопрос касался залогигеных клентов... Нужны ИМЕНА пользователей подключенный к IB. То что дает обычный суперсервер.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 28 апр 2005, 16:42

никак-с. в идеале нужна специальная поддержка в процессах классика, и некая тулза, которая будет опрашивать все эти вопросы на предмет:

user, ip, выполняемый запрос.

Это как минимум. Но увы, даже в 2.0 не получится.

tsaregorodtsev vitaly
Сообщения: 4
Зарегистрирован: 23 мар 2005, 14:15

Сообщение tsaregorodtsev vitaly » 28 апр 2005, 17:12

жаль. тогда прийдется или резать или супер...
спасибо.

Лысый
Сообщения: 177
Зарегистрирован: 08 ноя 2004, 08:20

Сообщение Лысый » 29 апр 2005, 09:36

mike2100 писал(а):хм, а если на клиенте выполняется длинный запрос ?
Есть такая проблема.. отчеты приходится в потоках делать

Ответить