On-line пользователи нужна таблица

Технические вопросы по UTM 5.0
Ответить
mesmit
Сообщения: 6
Зарегистрирован: Вт авг 12, 2008 16:46

On-line пользователи нужна таблица

Сообщение mesmit »

Их каких или какой таблицы можно вытащить on-line пользователей? На форуме была эта тема, но ссылки на скриптик все мертвые.

mikkey finn
Сообщения: 1612
Зарегистрирован: Пт ноя 10, 2006 15:23

Сообщение mikkey finn »

критерии онлайна и какие именно параметры юзеров надо вытащить?

mesmit
Сообщения: 6
Зарегистрирован: Вт авг 12, 2008 16:46

Сообщение mesmit »

Просто узнать в in-line юзер или нет. Они цепляются по VPN и PPPoE. Вот хотелось бы узнать кто сидит, а кто нет. Приходится каждый раз делать отчет по Dila-up и смотреть у кого открыта сессия.

SOLDIER
Сообщения: 649
Зарегистрирован: Чт мар 16, 2006 18:07

Сообщение SOLDIER »

Какое отношение имеет нахождение пользователя в онлайн к UTM? У меня, например, подключаются по PPTP (что не суть важно) и получают IP из диапазона 172.30.0.0/16. Вот такой простейший скрипт показывает пользователей онлайн, а также их количество:

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

#!/bin/bash
echo -e "Список IP-адресов:"
ifconfig | grep 172.30 | awk '{print $3}'| cut -f2 -d:| sort
Numbers=`ifconfig| grep 172.30 | wc -l`
echo -e "Количество пользователей на линии: $Numbers\n"
Написан на коленке за минуту
Могу ещё php-скрипт привести, который выводит пользователей в онлайн с логинами.

mesmit
Сообщения: 6
Зарегистрирован: Вт авг 12, 2008 16:46

Сообщение mesmit »

Смысл в другом. Когда выводится скриптом в браузере список пользователей, которые берутся из таблицы users, нужно как то выделить цветом пользователей, которые находятся в on-line. Где-то в какой-то таблице базы, наверное, есть пометка, что у пользователя сессия не закрыта или что-нибудь подобное.

SOLDIER
Сообщения: 649
Зарегистрирован: Чт мар 16, 2006 18:07

Сообщение SOLDIER »

mesmit писал(а):Смысл в другом. Когда выводится скриптом в браузере список пользователей, которые берутся из таблицы users, нужно как то выделить цветом пользователей, которые находятся в on-line. Где-то в какой-то таблице базы, наверное, есть пометка, что у пользователя сессия не закрыта или что-нибудь подобное.
Сомневаюсь, что это есть в какой-либо таблице. Впрочем, утверждать не буду. Меня и мой вариант вполне устраивает. У меня сделан самопальный php-скрипт, который выводит список пользователей, висящих в настоящий момент в онлайн.

mikkey finn
Сообщения: 1612
Зарегистрирован: Пт ноя 10, 2006 15:23

Сообщение mikkey finn »

Таблица dhs_sessions_log в базе данных UTM5. Поле - Acct_Status_Type
Коды админка пишет. Типа "закрыта сессия(2)", "открыта(1)", "обновлена(3)". Мож еще какие состояния есть.

SOLDIER
Сообщения: 649
Зарегистрирован: Чт мар 16, 2006 18:07

Сообщение SOLDIER »

mikkey finn писал(а):Таблица dhs_sessions_log в базе данных UTM5. Поле - Acct_Status_Type
Коды админка пишет. Типа "закрыта сессия(2)", "открыта(1)", "обновлена(3)". Мож еще какие состояния есть.
Спасибо за информацию. Не знал. Надо будет покопать эту табличку. То есть то, что она есть и используется, я конечно знал. Но вот про коды не слышал. Может потому, что необходимости такой не было. ;)

The_Ketchup
Сообщения: 14
Зарегистрирован: Чт авг 10, 2006 14:36

Сообщение The_Ketchup »

лучше на NAS разбирайтесь кто on-line, так как сессии не всегда корректно закрываются - бывают подвисшие сессии которые так и будут открытыми в отчете dial-up.

xoma
Сообщения: 23
Зарегистрирован: Чт ноя 15, 2007 10:47

Re: On-line пользователи нужна таблица

Сообщение xoma »

mesmit писал(а):Их каких или какой таблицы можно вытащить on-line пользователей? На форуме была эта тема, но ссылки на скриптик все мертвые.
есть такой переделанный с нибса файлик
online.php:

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

<?php
$db_connect=mysql_connect&#40;"localhost", "user", "pass"&#41; or die &#40;"Connect failed."&#41;;
$db_coonect=mysql_select_db&#40;"UTM5"&#41; or die &#40;"Fatal database query 'USE' error"&#41;;
?>
<HTML>
<HEAD>

<style>
&#123;FONT-SIZE&#58; 12px;&#125;
&#123; font-family&#58; Verdana, Arial, Helvetica, sans-serif; &#125;

A&#58;link &#123; COLOR&#58; #003366; TEXT-DECORATION&#58; none  &#125;
A&#58;visited &#123; COLOR&#58; #003366; TEXT-DECORATION&#58; none &#125;
A&#58;active &#123; COLOR&#58; #000099; TEXT-DECORATION&#58; none &#125;
A&#58;hover &#123;COLOR&#58; #000000; TEXT-DECORATION&#58; underline&#125;
Body &#123; background-color&#58;#ffffcc; color&#58;#000000 &#125;
</style>


<TITLE>&#58;&#58;OnLine</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-r">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="refresh" content='60'>

</HEAD>

<BODY BGCOLOR="#000000" LINK=blue VLINK=blue VLINK=blue>

<?

function format_time&#40;$sec&#41;
&#123;
    $a = array&#40;
    86400    => 'дн.', // количество секунд в сутках
    3600     => 'ч.', // количество секунд в часе
    60        => 'мин.', // количество секунд в минуте
    1        => 'сек.' // количество секунд в секунде
    &#41;;
    $out = '';
    foreach &#40;$a as $k=>$v&#41; &#123;
    $tmp = floor&#40;$sec/$k&#41;;
    $out .= &#40;$tmp?$tmp.$v.' '&#58;''&#41;;
    $sec -= $tmp*$k;
    &#125;
    return $out;
    &#125;
function sectime&#40;$stri,$tota&#41; &#123;

$hour=$tota / 3600; settype&#40;$hour,integer&#41;; $rel=ereg_replace&#40;"h","$hour",$stri&#41;;
$min=$tota % 3600 / 60; settype&#40;$min,integer&#41;; if &#40;$min<10&#41; $min="0$min"; $rel=ereg_replace&#40;"m","$min",$rel&#41;;
$sec=$tota % 3600 % 60; settype&#40;$sec,integer&#41;; if &#40;$sec<10&#41; $sec="0$sec"; $rel=ereg_replace&#40;"s","$sec",$rel&#41;;
return&#40;$rel&#41;;
&#125;//sectime

$result = mysql_query &#40;"select account_id,
User_Name,
Acct_Input_Octets,
Acct_Output_Octets,
NAS_Id,
NAS_Port,
&#40;CONCAT_WS&#40;'.',SUBSTRING_INDEX&#40;INET_NTOA&#40;Framed_IP_Address&0xFFFFFFFF&#41;,'.',-1&#41;,
SUBSTRING_INDEX&#40;SUBSTRING_INDEX&#40;INET_NTOA&#40;Framed_IP_Address&0xFFFFFFFF&#41;,'.',-2&#41;,'.',1&#41;,
SUBSTRING_INDEX&#40;SUBSTRING_INDEX&#40;INET_NTOA&#40;Framed_IP_Address&0xFFFFFFFF&#41;,'.',2&#41;,'.',-1&#41;,
SUBSTRING_INDEX&#40;INET_NTOA&#40;Framed_IP_Address&0xFFFFFFFF&#41;,'.',1&#41;&#41;&#41; as fr_ip,
Acct_Session_Time,
Calling_Station_Id,
recv_date from dhs_sessions_log
where Acct_Status_Type=1 or Acct_Status_Type=3"&#41;or die&#40;"online_list.php -> err1 ".mysql_error&#40;$LINK&#41;&#41;; //desc
$count=mysql_num_rows &#40;$result&#41;;
?>

<TABLE align=center BORDER=0 CELLSPACING=1 CELLPADDING=4 BGCOLOR=black>
<TR BGCOLOR="#dddd99" ALIGN=center><TD COLSPAN="11"><b>Online&#58; <?echo $count;?></b></TD></TR>
<TR BGCOLOR="#000000" ALIGN=center>
<TH><FONT color=#dddd99>N</TH>
<TH><FONT color=#dddd99>Пользователь</TH>
<TH><FONT color=#dddd99>Подключился</TH>
<TH><FONT color=#dddd99>Время</TH>
<TH><FONT color=#dddd99>Послал</TH>
<TH><FONT color=#dddd99>Принял</TH>
<TH><FONT color=#dddd99>empty</TH>
<TH><FONT color=#dddd99>IP</TH>
<TH><FONT color=#dddd99>Call from</TH>
<TH><FONT color=#dddd99>NAS</TH>
<TH><FONT color=#dddd99>Выполнить</TH>
</TR>
<?
for &#40;$i = 0; $i < mysql_num_rows &#40;$result&#41;; $i++&#41; &#123;
$row = mysql_fetch_object &#40;$result&#41;;
echo" <TR BGCOLOR=#dddd99>\n";
printf &#40;"  <TD ALIGN=center>%s</TD>\n", $i+1&#41;;
printf &#40;"  <TD ALIGN=center><B>%s</A></B></TD>\n", $row->User_Name&#41;;
$time_new=date&#40;"d.m.Y H&#58;i&#58;s",$row->recv_date&#41;;
printf &#40;"  <TD ALIGN=center><font size=-1>%s</font></TD>\n", $time_new&#41;;
$ttime = sectime&#40;'h&#58;m&#58;s', $row->Acct_Session_Time&#41;;
printf &#40;"  <TD ALIGN=center>%s</TD>\n", $ttime&#41;;
printf &#40;"  <TD ALIGN=center>%.2f</TD>\n", $row->Acct_Input_Octets/1024/1024&#41;;
printf &#40;"  <TD ALIGN=center>%.2f</TD>\n", $row->Acct_Output_Octets/1024/1024&#41;;
printf &#40;"  <TD ALIGN=CENTER>%s</TD>\n", $ff&#41;;
printf &#40;"  <TD ALIGN=left>%s</TD>\n", &#40;$row->fr_ip&#41;&#41;;
printf &#40;"  <TD ALIGN=CENTER>%s</TD>\n", $row->Calling_Station_Id&#41;;
#printf &#40;"  <TD ALIGN=CENTER>%s&#58;%s</TD>\n", $row->NAS_Id, $row->NAS_Port&#41;;
printf &#40;"  <TD ALIGN=CENTER>%s&#58;%s</TD>\n", $row->NAS_Id,$row->NAS_Port&#41;;
echo &#40;"<TD ALIGN=center></a>
</TD>\n"&#41;;
echo " </TR>\n";
 &#125;

mysql_free_result &#40;$result&#41;;
 ?>
</TABLE>

Ответить