Мы — долго запрягаем, быстро ездим, и сильно тормозим.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
www.lissyara.su
—> статьи
—> FreeBSD
|
|
Сложного ничего нету. Если припрёт показывать статистику пользователям, то в простейшем варианте, это будет выглядеть так:
|
То есть, просто определяется IP адрес компьютера с которого был сделан http запрос, и выводится статистика только для этого адреса. Если за одним компьютером работает больше одного пользователя - то надо придумывать что-то дополнительно :(
|
srg, 2005-10-09 в 20:38:21
А если по маске подсети? Не каждется вам, если сетка давольно большая, а вбивать все IP с именами пользователей просто лень.
lissyara, 2005-10-10 в 9:03:35
Я предложил вариант. А у ж как делать у себя на практике - решать Вам.
Ajax, 2006-02-06 в 18:40:23
Хороший скрипт, особенно когда юзеры в нет по mpd попадают, тогда IP и юзера из Mpd.secret можно выгребать :)
dsa, 2006-02-24 в 16:07:09
Кстати неплохо былоб таким вебмордам скриншоты делать и показывать. Чтоб видеть что и как отображается скрипт. Без установки.
Yanis.sql.ru, 2006-03-07 в 13:26:18
Да-да, положи скриншоты!
General, 2006-07-20 в 15:14:26
Сделал web-морду для trafd-mysql с возможностью просмотра статистики по интерфейсам/портам/протоколам/юзерам. Для кого актуально - см. http://shareexp.blogspot.com/
UFOS, 2006-07-21 в 4:02:34
Данные php мордочки не работают в apache22 + php5 т.е. при открытии просто белая страница.
nomad, 2006-09-11 в 15:17:50
В юзерском скрипте есть маненечко недочет: Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /var/www/html/test/user.php on line 79
79: $sql = mysql_query("SELECT to_IP, SUM(bytes) AS `bytes` FROM `"
. $IF_internal_servera . "_2005` WHERE `date` LIKE '"
. $curr_month . "-%' AND to_IP != '" . $ip_out_servera .
"' AND `to_IP` != '" . $ip_internal_servera .
"' AND `to_IP` = '" . $ip . "' AND `from_IP` != '"
. $ip_internal_servera . "' GROUP BY `to_IP` ORDER BY
`bytes` DESC");
Дату надо заменить на date(Y,time()), т.е. будет вот так:
$sql = mysql_query("SELECT to_IP, SUM(bytes) AS `bytes` FROM `"
. $IF_internal_servera . "_".date(Y,time())."` WHERE `date` LIKE '"
. $curr_month . "-%' AND to_IP != '" . $ip_out_servera .
"' AND `to_IP` != '" . $ip_internal_servera .
"' AND `to_IP` = '" . $ip . "' AND `from_IP` != '"
. $ip_internal_servera . "' GROUP BY `to_IP` ORDER BY
`bytes` DESC");
И что касается вбивания пользователей - как правило, они не изменяются постоянно - т.е. можно один раз вбить...
А можно сделать вот так:
line 84: user.php \ stat.php
$user_name = $users [$d ['to_IP']];
if (!isset ($user_name))
  $user_name = '<b>Неизвестный</b>';
Это вместо:
if($d['to_IP'] == '192.168.0.21'){$user_name = 'Петров Ф. А.';}
if($d['to_IP'] == '192.168.0.17'){$user_name = 'Сидоров Н. А.';}
if($d['to_IP'] == '192.168.0.13'){$user_name = 'Иванов А.Л.';}
И создать в начале скрипта массив
$users = array (
'ip' => 'username',
'192.168.0.255' => 'broadcast'
);
Я в свое под свои нужны писал скрипт инвентаризации-онлайн, у меня все пользователи и так хранятся в базе, так что после
$all = 'SELECT U.id_user, U.name, M.info FROM '.$db_inv_users.' U, '.$db_inv_main.' M WHERE M.id_user=U.id_user AND M.info != ""';
$all = result2array (mysql_query ($all));
foreach ($all as $item) {
  $username = $item ['name'];
  $item ['info'] = unserialize (decodestring ($item ['info']));
  echo "'".$item ['info']['network']['adapter']['0']['ip']."' => '".$username."',<br>";
} // foreach ($users as $user);
Получаем просто всех пользователей с 'ip' => 'username', а дальше - великий C-C, C-V.
nomad, 2006-09-11 в 15:20:08
И еще: Lissyar'e большой респект - редко когда находятся скрипты или руководства, работающие с первого раза и без напильника\обработки чего-либо где-либо.
К тому-же внятное, доходчивое объяснение для человека без опыта работы с какими-либо вещами - еще бОльшая редкость.
Спасибо большое!
Mika, 2006-09-13 в 16:55:40
Liss, спасибо.
Но у тебя косяк. Или в ipacctd или здесь поправь.
В мускуль ты пишешь в таблицу "имя . год", а считываешь за прошлый месяц из текущего года.
Еще косяк. Юзверю по умолчанию надо присваивать - иначе рамка не прорисовывается вокруг пробельной ячейки - некрасиво.
И время генерации страницы у меня на 10 юзверях (1 ословод, остальные пассивные сёрферы) растет на 1 секунду в сутки. Я конечно выкину все лишнее, порты ремот и локал например... Но предупреждать надо что на двухголовом ксеоне 3.2ГХз + 2Гб und FreeBSD5.4 оно так тормозит :)
KaMa-CyTpA, 2006-11-09 в 18:10:02
Прекрасная тема, но вот только указывается - пользователь - столько-то мегабайт. А на какие сайты лазил?
У нас такая тема - на сайты не по работе - в зарплату воткнули и всё. Пользую (пока) ISA 2004 и считаю InternetAccessMonitor. Но с огромным удовольствием перетащил бы всех на фрю...
Chani, 2006-11-14 в 16:08:22
А я ису изгнал, теперь все на фре
nomad, 2006-11-23 в 11:53:46
2KaMa-CyTpA: Это учет трафика. Вопросами "куда лазил пользователь" занимается Squid.
Другой уровень модели ISO\OSI
io, 2007-01-11 в 21:18:47
а эта веб морда к ipacctd подходит?
Slider007, 2007-03-29 в 11:41:15
29 марта столкнулся с косяком:
конструкция
$old_month = date(Y,time()) . "-" . date('m',strtotime("-1 month"));
вместо "2007-02" выдает "2007-03". Почему так не знаю, т.к. в php не силен, но подозреваю это от того, что в феврале нет 29 дня (как и 30 и 31). Так что эта конструкция по идее будет глючить и каждое 31 число месяца, да и декабрь как предыдущий месяц не будет определяться ;).
Вот.
Почесав репу написал чуть-чуть другой код. Не судите если коряво или можно сделать проще - это первое что я на php написал в жизни ..
Итак, кусок
// определяем текущий месяц, и прошлый месяц - для вывода статистики
$curr_month = date(Y,time()) . "-" . date(m,time());
$old_month = date(Y,time()) . "-" . date('m',strtotime("-1 month"));
надо заменить на
$curr_month_num = date(m,time());
$curr_year_num = date(Y,time());
$curr_month = $curr_year_num . "-" . $curr_month_num;
$previous_month_num = $curr_month_num - 1;
$previous_year_num = $curr_year_num;
if ($previous_month_num < 1)
{
$previous_month_num = 12;
$previous_year_num = $previous_year_num - 1;
}
if ($previous_month_num < 10)
{
$previous_month_num = "0" . $previous_month_num;
}
$old_month = $previous_year_num . "-" . $previous_month_num;
Скрипт потестил только в текущем периоде (т.е. на сегодняшней дате 29.03.2007), по этому не уверен в нем на 100%, особенно как будет определяться предыдущий месяц в январе, но по идее всё должно заработать, короче в январе будет ясно ;).
Slider007, 2007-03-30 в 6:51:04
Дополнение:
ну и ещё в запросах косяк - с именем таблицы, опять же в январе за декабрь ничё считаться не будет. Mika об этом говорил уже.
lissyara, 2007-03-30 в 9:58:16
Это просто образец - в какую сторону плясать :)
Некоторые на основе этого образца такие весчи безумные лепят - с календариками и прочей а-ля аджаксовой хренью :)))
KaMa-CyTpA, 2007-03-31 в 15:55:15
2nomad
Сквид тока веб смотрит - а вот в КС человек накачал или по RDP - этим сквид не занимается.
wanderer, 2007-12-07 в 19:53:41
вот, сделал определение месяцев по-короче:
$_time = time();
$_year = date("Y", $_time);
$_month = date("m", $_time);
$curr_month = $_year . "-" . $_month;
$last_month = ($_month == 1) ? (($_year - 1) . "-" . "12") : ($_year . "-" . ($_month - 1));
ScorpioN, 2008-03-03 в 6:49:12
Определение месяцев еще короче :)
$curr_month = date('Y-m');
$old_month = date('Y-m',mktime(0,0,0,date('n')-1,1,date('Y')));
fr0st, 2008-04-17 в 17:06:43
а если есть внутрисетевой трафик он складывается с Интернет трафиком или нет?
Zuek, 2008-09-23 в 14:48:51
Настоятельно рекомендую переделать конструкцию определения прошлого месяца в более изящный вид, применимый, правда, только с php5.1:
$curr_day = date(Y,time()) . "-" . date(m,time()) . "-" . date(d,time());
$old_m = new DateTime($curr_day);
$old_m -> modify('-1 month');
$old_month = $old_m -> format('Y-m');
unset ($old_m);
...и это - только на вскидку, под авторством человека, не писавшего ничего серьёзного с 1994-го, когда про интернет только по телику иногда слышали =)
Zuek, 2008-09-23 в 14:51:58
P.S.: Надеюсь, общественность простит мне сохранённую громоздкую конструкцию формирования $curr_day, не использующую директиву format('Y-m-d')
;-)
lissyara, 2008-09-23 в 14:54:19
Это - первое что я написал на php.
Так что - оставлю как есть. Воспоминание =)
Zuek, 2008-09-23 в 15:42:21
p.P.S.: Опять же надеюсь на понимание общественности в вопросе формирования запроса к таблице для вывода статистики за прошлый месяц - имя таблицы будет никак не '$IF_out_servera . "_" . date(Y,time())', а некоей конструкцией наподобии '$IF_out_servera . "_" . $old_year', но в моей сети пришлось создавать отдельные таблицы по месяцам (слабый сервер с мускулом и много клиентов), поэтому я не придавал этому аспекту большого значения...
User, 2009-02-26 в 10:07:51
А если требуется смотреть статистику по дням?
Как можно такое сделать?
2014-07-27, lissyara
gmirror
Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9
Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту
Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis
Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
2011-08-14, zentarim
Wi-FI роутер + DHCP + DNS
Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
2011-06-15, -ZG-
Охранная система на FreeBSD+LPT
В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
2011-03-13, terminus
ng_nat
Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
2011-02-20, Капитан
Nagios+Digitemp
Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
2011-02-17, Le1
Zyxel Configuration
Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
2011-02-16, fox
hast carp zfs ucarp cluster
HAST (Highly Available Storage), CARP, UCARP, ZFS, Cluster настройка и одаптация плюс личные размышления…
2011-02-04, BlackCat
Восстановление ZFS
История о том, как был восстановлен развалившийся RAIDZ ZFS-пул (перешедший в FAULTED) с помощью скотча и подручных средств. Или о том, какие приключения ожидают тех, кто не делает резервных копий.
2011-02-03, Капитан
1-Wire
Статья описывает самостоятельное изготовление контроллера DS9097 для съёма показаний с датчиков температуры DS1820 с помощью программы Digitemp.
2011-01-28, Капитан
Температура в серверной
Статья описывает построение системы наблюдения за температурой в помещении серверной с использованием программы Digitemp и выводом графиков в MRTG
2011-01-21, m4rkell
Syslog server
Как то буквально на днях, у нас завалилось, что то в еве) или не в еве не суть. Суть в том, что когда захотели снять логи с хостов esx обнаружили, что хранят эти негодяи логии только за последнии сутк
2011-01-07, lissyara
Canon/gphotofs
Монтирование цифровых фотоаппаратов Canon (PTP) как файловой системы, автоматизация этого процесса через события devd и внешние скрипты.
2010-12-13, Al
IPSec
Описание принципов работы IPSEC и способов аутентификации.
2010-12-07, manefesto
FreeBSD on flash
Было принято решении переехать на USB Flash и установить минимальный джентельменский набор для работы своего роутера. Делаем =)
2010-12-05, Fomalhaut
root ZFS, GPT
Инструкция по установке FreeBSD с использованием в качестве таблицы разделов GPT и в качестве основной файловой системы - ZFS
2010-09-05, Cancer
Настройка аудиоплеера на ximp3
Цели: Простенький аудиоплеер, для того что бы тетя продавец в магазине утром пришла нажала на кнопку Power и заиграла в зале музыка, так же был доступ по сети, общая шара куда можно заливать музыку, к
2010-08-31, Cancer
Установка и настройка OpenVPN
На днях появилась задача - объединить головной офис и 3 филиала в одну сеть через интернет посредством OpenVPN, чтобы люди могли подключаться через RDP к базам 1С на серверах.
2010-08-25, manefesto
freebsd lvm
Использование linux_lvm для работы с LVM разделами из-под FreeBSD. Проблемы которые возники при монтирование lvm раздела
2010-04-30, gonzo111
proftpd file auth"a
Proftpd - квоты и авторизация из файлов, без использования базы данных и/или системных пользователей
2010-04-22, lissyara
tw_cli
Пошаговая инструкция по восстановлению RAID на контроллере 3ware, из которого выпал один диск. Настройка мониторинга состояния рейда и отчётов о его состоянии на email.
2010-04-14, fox
MySQL Master+Master
MySQL (Master Master) and (Master Slave) Как настроить репликацию…
2010-03-09, terminus
DNS zones
Краткий ликбез про управление DNS зонами. Примеры проведения делегирования прямых и обратных DNS зон.
2010-03-09, aspera
Squid+AD (group access)
Настройка прокси сервера SQUID с автроризацией пользователей в AD. Разделение пользователей на группы
2010-03-02, BlackCat
Шлюз: Часть 4
Настройка дополнительных сервисов: синхронизация времени (OpenNTPD), клиент DynDNS.org.
2010-03-01, BlackCat
Шлюз: Часть 3
Настройка DHCP и DNS серверов для работы внутри частной сети, c поддержкой внутренних (частных зон) DNS, а так же интеграция DHCP и DNS сервисов.
2010-03-01, BlackCat
Шлюз: Часть 2
Конфигурация МСЭ pf для проброса портов с изменением порта назначения и без, а так же поддержки активного режима FTP и ограничения максимального размера сегмента
2010-03-01, BlackCat
Шлюз: Часть 1
Быстрая настройка шлюза/маршрутизатора с установлением PPPoE-соединения, поддержкой NAT и DNS-forwarding.
2010-02-23, Morty
darkstat
Простая считалка траффика, со встроенным веб-сервером. Очень маленькая, может делать отчеты трафика по хостам, портам, протоколам, а также строить графики
2010-01-23, gonzo111
squid+sams+sqstat
Пилим squid и sams - примеры конфигов с объяснениями. Установка SqStat.
вверх
|
Этот информационный блок появился по той простой причине,
что многие считают нормальным, брать чужую информацию не уведомляя автора
(что не так страшно), и не оставляя линк на оригинал и автора — что более существенно.
Я не против распространения информации — только за. Только условие простое — извольте
подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой,
незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
Если соизволите поставить автора в известность — то вообще почёт вам и уважение.
© lissyara 2006-10-24 08:47 MSK
Комментарии пользователей [26 шт.]