Биллинговая система Nodeny

Главная категория => Разработка => Тема начата: nops от 07 Февраля 2012, 07:27:51



Название: UpTime в веб-админке
Отправлено: nops от 07 Февраля 2012, 07:27:51
Всем здрасте!
Вот тут мне захотелось реализовать такую фишку: Сделать в админке блок с аптаймом сервера.
если вот в консоли
Код:
uptime
11:27AM  up 1 day, 15:59, 1 user, load averages: 0.21, 0.17, 0.17
вот и хочется сделать вывод и в админке так же.
Как такое можно реализовать?!
P.S. Не задавайте вопросов типа: "зачем оно надо?" или "Зайди в консоль и посмотри..." Хочу именно  админке и только для админов.


Название: Re: UpTime в веб-админке
Отправлено: ser970 от 07 Февраля 2012, 09:55:52
вариантов море

$up = `cat /proc/uptime | awk ' {print $1}'`;

или так

use Shell;
$up= uptime();



Название: Re: UpTime в веб-админке
Отправлено: versus от 07 Февраля 2012, 10:30:26
Поставь заббикс и спи спокойно


Название: Re: UpTime в веб-админке
Отправлено: nops от 07 Февраля 2012, 14:24:10
да нет, забикс мне не надо, это просто фишка, не несущая никакого функционала;)
Вопрос в другом, куда воткнуть то, что вы посоветовали...


Название: Re: UpTime в веб-админке
Отправлено: 0xbad0c0d3 от 07 Февраля 2012, 15:16:45
Смотря где это должно отображаться... Туда и втыкать


Название: Re: UpTime в веб-админке
Отправлено: nops от 07 Февраля 2012, 15:23:02
вот когда админка открывается, там вверху меню, вот либо под ним, либо справа от него....
Это куда вставить?


Название: Re: UpTime в веб-админке
Отправлено: 0xbad0c0d3 от 07 Февраля 2012, 21:44:04
cgi-bin/adm/adm.pl


Название: Re: UpTime в веб-админке
Отправлено: nops от 07 Февраля 2012, 22:05:39
Вы определенно издеваетесь. куда именно?!


Название: Re: UpTime в веб-админке
Отправлено: ser970 от 07 Февраля 2012, 22:38:45
вы просили как
вам показали.
сказали куда.
причем абсолютно верные ответы.
ну а писать за вас никто не будет.
за удовольствие нужно платить а не возмущаться.
даже не зная перла - открыв файл можно проанализировать - попробовать и за 1-2 часа получить результат


Название: Re: UpTime в веб-админке
Отправлено: nops от 07 Февраля 2012, 23:08:18
хорошо, спасибо. Завтра попробую:)


Название: Re: UpTime в веб-админке
Отправлено: nops от 13 Февраля 2012, 11:12:46
Итак.
Решение найдено. Отдельное спасибо Redmen
Открываем файл adm.pl
В самом верху, после:
Цитировать
#!/usr/bin/perl
# ------------------- NoDeny ------------------
# Copyright (с) Volik Stanislav, 2008, 2009
# Read license http://nodeny.com.ua/license.txt
# ---------------------------------------------
$VER=49.32;

use Time::HiRes qw( gettimeofday tv_interval );
use Time::localtime;
use DBI;
Вставляем следующее:
Цитировать
use Shell;
use POSIX qw(floor);

sub ptime {
$var = `sysctl -n kern.boottime | awk '{print \$4}'`;
                $var =~ s/,//g;
                $vary = `date +%s`; chomp($vary);
                $varx = $vary - $var;
                $varx = sprintf("%2d", $varx);
                $vard = floor($varx / 86400);
                $varx %= 86400;
                $varh = floor($varx / 3600);
                $varx %= 3600;
                $varm = floor($varx / 60);
                if($vard eq 0) { $vard = ''; } elsif($vard >= 1) { $vard = $vard.'д '; }
                if($varh eq 0) { $varh = ''; } elsif($varh >= 1) { $varh = $varh.'ч '; }
                if($varm eq 0) { $varm = ''; } elsif($varm >= 1) { $varm = $varm.'м '; }
                return $vard.$varh.$varm;
}
ВАЖНО: Не пропустите закрытие ковычек в конце, я пропустил и выдало 500-ю ошибку!
далее тут же ищем следующее:
Цитировать
$OUT.=&Table('width100',
   &tag('tr',
      &tag('td',&ahref("$scrpt0&a=mytune","<img src='$Adm_pic'>")).
      &tag('td','&nbsp;',"width='16%'").
      &tag('td',$out,"align=center valign=top").
      &tag('td','&nbsp;',"width='16%'").
      &tag('td','Адм:'.$br.$Display_admin)
   ).
Вместо этого вписываем:
Цитировать
$OUT.=&Table('width100',
   &tag('tr',
      &tag('td',&ahref("$scrpt0&a=mytune","<img src='$Adm_pic'>")).
     &tag('td','UpTime:'.$br.&ptime,"align=center width='8%'").
       &tag('td','&nbsp;',"width='8%'").

      &tag('td',$out,"align=center valign=top").
      &tag('td','&nbsp;',"width='16%'").
      &tag('td','Админ:'.$br.$Display_admin)
   ).
(выделил строчки, которые изменяются)
В итоге сохраняем и пробуем. В левом верхнем углу, справа от аватары появится значение аптайма.


Название: Re: UpTime в веб-админке
Отправлено: Александр (AleksHr) от 13 Февраля 2012, 11:36:18
А как вставить например по центру, там где пишет Здравствуйте, такой то админ, под ним как раз.


Название: Re: UpTime в веб-админке
Отправлено: nops от 13 Февраля 2012, 12:13:45
В этом случае Uptime сервера будет показываться только на одной странице, на главной так сказать, в меню указано как знак параграфа.
Покопайте файл /usr/local/nodeny/web/title.pl
 
Нашел для Вас решение:
Открываем файл:
Код:
/usr/local/nodeny/web/title.pl
находим строчку:
Код:
$OUT.=&div( 'row2',&Printf('[br]Здравствуйте, [filtr|bold][br2]',$Aname || 'администратор' ) );
Дописываем ниже:
Код:
$OUT.=&div( 'row2',&Printf('Сервер работает уже: [filtr|bold][br2]',&ptime ) );
Наслаждайтесь.
 
P.S. Знающие и понимающие в перле люди, не пинайте, это реально самое первое, что написал на перле, хоть и по аналогии:-D


Название: Re: UpTime в веб-админке
Отправлено: ser970 от 13 Февраля 2012, 12:22:58
sub ptime {
$var = `sysctl -n kern.boottime | awk '{print \$4}'`;
                $var =~ s/,//g;
                $vary = `date +%s`; chomp($vary);
                $varx = $vary - $var;
                $varx = sprintf("%2d", $varx);
                $vard = floor($varx / 86400);
                $varx %= 86400;
                $varh = floor($varx / 3600);
                $varx %= 3600;
                $varm = floor($varx / 60);
                if($vard eq 0) { $vard = ''; } elsif($vard >= 1) { $vard = $vard.'д '; }
                if($varh eq 0) { $varh = ''; } elsif($varh >= 1) { $varh = $varh.'ч '; }
                if($varm eq 0) { $varm = ''; } elsif($varm >= 1) { $varm = $varm.'м '; }
                return $vard.$varh.$varm;
}

@up=split/\,/,uptime();
ну и вывод переменой $up[0]; 

12:21PM  up 212 days

на


Название: Re: UpTime в веб-админке
Отправлено: poxy. от 13 Февраля 2012, 22:43:30
ИМХО - изврат, есть системы мониторинга, а биллинг, это биллинг.


Название: Re: UpTime в веб-админке
Отправлено: Cell от 14 Февраля 2012, 09:35:42
Ну как сказать.. такая фича была бы полезна на странице мониторинга саттелитов, только мониторить соотвественно нужно и саттелиты тоже.


Название: Re: UpTime в веб-админке
Отправлено: nops от 14 Февраля 2012, 09:53:43
Cell, Вы мне предлагаете добавить найти и сделать так, чтобы разделе мониторинг сателитов выдавалась та же строчка?!
А Вам не кажется что для первого раза мне лишку несколько?! Я ноль в перле...:(


Название: Re: UpTime в веб-админке
Отправлено: Rico-X от 14 Февраля 2012, 10:37:03
Система мониторинга? Не, не слышал...
<sarcazm>А чего только аптайм? можно еще температуру, загрузку, свободное место выводить</sarcazm>


Название: Re: UpTime в веб-админке
Отправлено: ser970 от 14 Февраля 2012, 12:05:57
Cell, Вы мне предлагаете добавить найти и сделать так, чтобы разделе мониторинг сателитов выдавалась та же строчка?!
А Вам не кажется что для первого раза мне лишку несколько?! Я ноль в перле...:(
ну уже не ноль... ;D
решая задачи такие задачи и опыт прийдет.


Система мониторинга? Не, не слышал...
<sarcazm>А чего только аптайм? можно еще температуру, загрузку, свободное место выводить</sarcazm>

так что ли?


Название: Re: UpTime в веб-админке
Отправлено: Rico-X от 14 Февраля 2012, 14:31:58
Именно :) Только вот не пойму, зачем оно в биллинге?


Название: Re: UpTime в веб-админке
Отправлено: ser970 от 14 Февраля 2012, 14:56:14
Именно :) Только вот не пойму, зачем оно в биллинге?
облом было куктус ставить и туда добавлять - один черт сюда вносить надо как мне проще (ленивый я)


Название: Re: UpTime в веб-админке
Отправлено: Cell от 14 Февраля 2012, 16:36:25
Cell, Вы мне предлагаете добавить найти и сделать так, чтобы разделе мониторинг сателитов выдавалась та же строчка?!
Да ничего я тебе не предлагаю, констатировал факт, где и для чего эта фича была бы полезной. Но мне кажется в том виде как я это вижу затраты на получение данной фичи слегка неадекватны полученному от этого эффекта. Поэтому предлагаю забить )


Название: Re: UpTime в веб-админке
Отправлено: bnet от 14 Февраля 2012, 20:57:12
как то все сложно...
для себя так сделал:
title.pl
Код:
 use Shell;
 $up = w();
 $st = `/sbin/gmirror status`;
 $ul.=&li.$up;
 $ul.=&li.$st;
в итоге
Код:
8:57PM up 3:57, 0 users, load averages: 0.20, 0.36, 0.34 USER TTY FROM LOGIN@ IDLE WHAT
Name Status Components mirror/gm0 COMPLETE ad6 ad7


Название: Re: UpTime в веб-админке
Отправлено: nops от 21 Февраля 2012, 10:16:13
Уважаемые друзья!
Появился непонятный мне баг.
сегодня отваливалось железо у прова, мне переназначились серые IP.
Так же был перезапущен mpd5.
После этого, ну не сразу, а спустя пару часов, захожу в админку а там вижу чудо:
Цитировать
Сервер работает уже: 15391 д 8 ч 16 м
меня это так сильно удивило...
вот что в консоли:
Цитировать
$ uptime
 2:13PM  up 15 days, 18:46, 1 user, load averages: 0.20, 0.13, 0.09
$
Скрин во вложении.
Объясните мне, как такое возможно?! Ну и как поправить;-)


Название: Re: UpTime в веб-админке
Отправлено: Aivanzipper от 21 Февраля 2012, 17:52:06
где-то регексп кривой


Название: Re: UpTime в веб-админке
Отправлено: 0xbad0c0d3 от 21 Февраля 2012, 18:29:38
Не, ну нормальный аптайм, что не так? ))))))
P.S. Нужно делать проверки на ошибки и на валидность исходных данных.