ser970
NoDeny
Спец
Карма: 70
Offline
Сообщений: 1323
|
|
« Ответ #15 : 29 Сентября 2010, 09:45:17 » |
|
счас тестируется фишка она будет работать и без переделки listusers.pl
|
|
|
Записан
|
|
|
|
ser970
NoDeny
Спец
Карма: 70
Offline
Сообщений: 1323
|
|
« Ответ #16 : 29 Сентября 2010, 11:41:07 » |
|
touch autv.pl #!/usr/bin/perl
use DBI; use Time::localtime; use Time::HiRes qw (gettimeofday tv_interval); #28 сентябрь 2010 $tme=time(); $capl='/usr/local/nodeny/web/calls.pl'; $main_config='/usr/local/nodeny/nodeny.cfg.pl'; print ("error: not file /usr/local/nodeny/conf.cfg.pl") unless -e $main_config; eval{require $main_config}; eval{require $capl};
$DSN="DBI:mysql:database=$db_name;host=$db_server;mysql_connect_timeout=$mysql_connect_timeout"; $dbh=DBI->connect($DSN,$user,$pw,{PrintError=>1});
$sdbtr=`date +x%Yx%-mx%-d`; $au_t=time(); $au_t=$au_t-300; $sth=$dbh->prepare(" select users.id as id,ip,`in`,`out` from users left join $sdbtr on users.id=$sdbtr.mid where lstate>0 and time>$au_t group by users.id; "); $sth->execute; while ($p=$sth->fetchrow_hashref) { $use_id=$p->{id}; $tin=$p->{in}; $tout=$p->{out}; if (($tin > 0)&($tout > 0)) { $rsh = $dbh->prepare("INSERT INTO dblogin set mid=$use_id,act=17,time=unix_timestamp()"); $rsh->execute(); } } 1;
ну в вертушка #!/bin/sh
while true do nice -n -15 perl /usr/local/nodeny/autv.pl sleep 120 done
запуск вертушки в фоне работает как с правленім listusers так и нет конечно кошернее добавить в тело nol2auth.pl но мне и так сойдет.
|
|
|
Записан
|
|
|
|
poxy.
NoDeny
Спец
Карма: 10
Offline
Сообщений: 844
|
|
« Ответ #17 : 30 Сентября 2010, 00:54:31 » |
|
Спасибо!
|
|
|
Записан
|
|
|
|
Андрій
NoDeny
Старожил
Карма: 3
Offline
Сообщений: 294
|
|
« Ответ #18 : 30 Сентября 2010, 21:39:54 » |
|
потрібна функція, дякую.
|
|
|
Записан
|
|
|
|
Александр (AleksHr)
NoDeny
Старожил
Карма: 2
Offline
Сообщений: 323
|
|
« Ответ #19 : 06 Октября 2010, 14:21:01 » |
|
При использовании вишестоящей фичи что показывает последнюю активность абонента, перестает работать - Операции > Авторизированные сейчас. Тоесть иногда кого то показывает, но далеко не как раньше, ясное дело listuset.pl модифицырован...
Может возможно как нить исправить?)
|
|
|
Записан
|
|
|
|
Андрій
NoDeny
Старожил
Карма: 3
Offline
Сообщений: 294
|
|
« Ответ #20 : 06 Октября 2010, 14:37:57 » |
|
в мене все працює нормально, listuset.pl я не змінював
|
|
|
Записан
|
|
|
|
ser970
NoDeny
Спец
Карма: 70
Offline
Сообщений: 1323
|
|
« Ответ #21 : 06 Октября 2010, 18:10:51 » |
|
При использовании вишестоящей фичи что показывает последнюю активность абонента, перестает работать - Операции > Авторизированные сейчас. Тоесть иногда кого то показывает, но далеко не как раньше, ясное дело listuset.pl модифицырован...
Может возможно как нить исправить?)
ничего там не перестает. и рабоате что так что єтак - проверяно и первій вариант и второй.
|
|
|
Записан
|
|
|
|
Александр (AleksHr)
NoDeny
Старожил
Карма: 2
Offline
Сообщений: 323
|
|
« Ответ #22 : 07 Октября 2010, 07:58:19 » |
|
Якщо не змінювати listusers.pl - все працює, якщо змінити то ні. Але я не бачу змісту тепер його змінювати, все рівно ключики є , думав просто якщо початкова версія буде - то не буде видно авторизованих в списку абонентів, але все видно успішно .
|
|
|
Записан
|
|
|
|
Александр (AleksHr)
NoDeny
Старожил
Карма: 2
Offline
Сообщений: 323
|
|
« Ответ #23 : 09 Октября 2010, 00:02:11 » |
|
#!/bin/sh
while true do nice -n -15 perl /usr/local/nodeny/autv.pl sleep 120 done Внимание! Не забудьте назвать файл например с буквы z, чтобы он запускался в последнюю очередь. Так как ниодин скрипт после него стартовать уже не будет! Сегодня час потратил чтобы понять почему скрипты автоматически перестали запускатся (назвал был autv.sh).
|
|
|
Записан
|
|
|
|
keeper1978
NoDeny
Постоялец
Карма: -16
Offline
Сообщений: 101
|
|
« Ответ #24 : 09 Октября 2010, 07:23:51 » |
|
Озвучь еще разок, если не трудно (без глупых вопросов) т.к. не успел себе переписать, или в личку.
из-за личного уважения к т.Cell после строк $eurl=''; # end url - строка, дописываемая к запросу в кнопках страниц $Fw=int $F{w}; # кнопка `Вид` - какие столбцы выводить в списке $eurl.="&w=$Fw" if $Fw; $Fed=int $F{ed}; # единица измерения трафика (Мб/кб/байт) $eurl.="&ed=$Fed" if $Fed; $Fed||=2; # по умолчанию целые Мб $Fed--;
добавляем это определение текущей таблицы трафика в даном случае х таблица $sdbtr=`date +x%Yx%-mx%-d`; $au_t=time(); $au_t=$au_t-300;#период вермени за какой будем считать траф если упользователя стоит всегда онлине
после строк # ======================= # Поиск # =======================
$sel_from_users="id FROM users WHERE $where_grp"; $sel_from_fullusers="id FROM fullusers WHERE $where_grp"; $sel_from_users=$sel_from_fullusers if abs($F{sort})>5;
втавляем строку $sel_from_users_au="users.id as id,ip,`in`,`out` from users left join $sdbtr on users.id=$sdbtr.mid where (auth<>'no' and lstate=0) or (time>$au_t and auth='no' and lstate>0) group by users.id";
собственно сам запрос меняем строки на такую (она идеч чуть ниже ) '2' => ["$sel_from_users_au", 'Авторизованные в данный момент'],
и и приводим кусок кода к виду while( %h=%{ $sql2->get_line } ) { $at=$oln=''; # показать метод авторизации if( $show_auth_m && nSql->new({ dbh =>$dbh, sql =>"SELECT act,time FROM login WHERE act>0 AND mid=$h{id} ORDER BY time DESC LIMIT 1", show => 'line', comment => 'Последняя авторизация', hash =>\%hh }) ) { $auth_t=$hh{time}>0 && '('.&the_short_time($hh{time},$t).')'; $auth_t=~s| | |g; $auth_t.=' '; $at=$h{auth}; }else{ $auth_t=' '; $sthst=&sql($dbh," select sum(`in`) as `in`,sum(`out`) as `out` from $sdbtr where mid=$h{id} and time>$au_t limit 1"); $pst=$sthst->fetchrow_hashref(); $tin=$pst->{in}; $tout=$pst->{out}; if (($tin >0)&($tout>0)) { $at="on"; $oln=1; } } if ($oln == 1) { $ips_tbl.=&tag('tr', &tag('td',$auth_t,'width=50%'). &tag('td',&ShowModeAuth($at),'width=1%'). &tag('td',$h{ip}). &tag('td',$h{lstate}? &tag('acronym','♥',"title='всегда online активность входящий=".$tin." исходящий=".$tout."' class=error") : ' ','width=1%') ); }else{ $ips_tbl.=&tag('tr', &tag('td',$auth_t,'width=50%'). &tag('td',&ShowModeAuth($h{auth}),'width=1%'). &tag('td',$h{ip}). &tag('td',$h{lstate}? &tag('acronym','♥',"title='всегда online активность входящий=".$tin." исходящий=".$tout."' class=error") : ' ','width=1%') ); } $ids.=&RRow('','c',$h{id}); }
тоесть пользователей которые всегда онлайн мониторим по наличию входящего и исходященно (именно и а не или ) ну вот и все. люди подскажите хоть какие файлы ковырять
|
|
|
Записан
|
|
|
|
Александр (AleksHr)
NoDeny
Старожил
Карма: 2
Offline
Сообщений: 323
|
|
« Ответ #25 : 09 Октября 2010, 08:32:23 » |
|
keeper1978, ничего не меняй! Доавб только последний скрипт в верштушку (/usr/local/etc/rc.d/).
|
|
|
Записан
|
|
|
|
ser970
NoDeny
Спец
Карма: 70
Offline
Сообщений: 1323
|
|
« Ответ #26 : 09 Октября 2010, 09:15:52 » |
|
#!/bin/sh
while true do nice -n -15 perl /usr/local/nodeny/autv.pl sleep 120 done Внимание! Не забудьте назвать файл например с буквы z, чтобы он запускался в последнюю очередь. Так как ниодин скрипт после него стартовать уже не будет! Сегодня час потратил чтобы понять почему скрипты автоматически перестали запускатся (назвал был autv.sh). точно все скрипты должны запускатся после мусклуа тоеcть w_autv.pl
|
|
|
Записан
|
|
|
|
keeper1978
NoDeny
Постоялец
Карма: -16
Offline
Сообщений: 101
|
|
« Ответ #27 : 09 Октября 2010, 20:27:49 » |
|
не понятная ситуфция всё переименовал файл autv.pl в w_autv.pl скрипт запуска в z_start_autv.sh но при заррузке после загрузки cron вылазит в локальной консоли Local package initialization доступ можно получить только через ssh при удалении w_autv.pl из local/etc/rc.d/ вся загрузка происходит нормально всём может быть дело проверил в скриптах моих касяков нет (при копировании) хотя скрипты работают пользователей онлайн показывает
|
|
« Последнее редактирование: 09 Октября 2010, 20:29:24 от keeper1978 »
|
Записан
|
|
|
|
0xbad0c0d3
гуру nodeny )
NoDeny
Спец
Карма: 116
Offline
Сообщений: 1059
|
|
« Ответ #28 : 14 Октября 2010, 19:02:46 » |
|
Предлагаю такой вариант: #!/usr/bin/perl -w
use strict; use DBI;
my $config = "/usr/local/nodeny/nodeny.cfg.pl"; print "error: $!\n" if ! -e $config; eval{require $config}; our($query,$traf_tbl,$dbh,$db_name,$db_server,$user,$pw);
my($sec,$min,$hour,$mday,$mon,$year) = localtime; $traf_tbl=sprintf("x%dx%dx%d",$year+1900,$mon+1,$mday); $query = "INSERT INTO dblogin (mid,act,time) SELECT `users`.`id`,'17',UNIX_TIMESTAMP() FROM `users` LEFT JOIN `$traf_tbl` ON `users`.`id`=`$traf_tbl`.`mid` WHERE `in` > 0 AND `out` > 0 AND `$traf_tbl`.`time`>=(SELECT time FROM traf_info ORDER BY time DESC LIMIT 1) AND `users`.`lstate`>0"; $dbh = DBI->connect("DBI:mysql:$db_name:$db_server",$user,$pw,{ PrintError => 1}) or die; print "error: $!\n" if $dbh->do($query) lt 0; $dbh->disconnect;
Вертушку можно такую же, как предложил ser970
|
|
« Последнее редактирование: 14 Октября 2010, 19:08:23 от 0xbad0c0d3 »
|
Записан
|
|
|
|
Александр (AleksHr)
NoDeny
Старожил
Карма: 2
Offline
Сообщений: 323
|
|
« Ответ #29 : 14 Октября 2010, 23:10:03 » |
|
0xbad0c0d3, мож сказать какие изменения?
|
|
|
Записан
|
|
|
|
|