Обнуление данных в 11.00

Вопросы, касающиеся установки и настройки всех программ сервера хотспота
Skydreem
Сообщения: 298
Зарегистрирован: 28 май 2011, 14:51
Контактная информация:

Обнуление данных в 11.00

Сообщение Skydreem »

Привет. Заметил такую особенность системы как сбрасывать всех пользователей из списка в 11.00 каждый день. В биллинге они не светятся, но к системе подключены и пользуются, поэтому реально определить сколько пользователей подключено к сети после этого определить сложно. Как мне перенести это время в настройках на 2 часа ночи?
Аватара пользователя
Dmitry
Администратор
Сообщения: 1073
Зарегистрирован: 25 май 2011, 09:14
Откуда: г. Запорожье, Украина
Контактная информация:

Re: Обнуление данных в 11.00

Сообщение Dmitry »

В файле системного расписания заданий планировщика cron нужно отредактировать строку с соответствующим заданием. Для этого введите команду

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

sudo mcedit /etc/crontab
в открывшемся файле найдите строку (с учетом указанного вами времени 11.00):

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

0 11 * * * root mysql -uroot –pваш_пароль < /root/clear.sql
(вместо "ваш_пароль" будет указан пароль пользователя root для сервера баз данных MySQL, используемый в вашей системе)
Отредактируйте строку так, чтобы шаблон времени запуска стал таким
0 2 * * *
(остальной текст в строке не меняйте).
Подробнее - есть в Инструкции и про сам планировщик cron (раздел "Скрипты и cron") и про это задание (раздел "Скрипт удаления зависших сессий из базы RADIUS")
Аватара пользователя
Dmitry
Администратор
Сообщения: 1073
Зарегистрирован: 25 май 2011, 09:14
Откуда: г. Запорожье, Украина
Контактная информация:

Re: Обнуление данных в 11.00

Сообщение Dmitry »

Написал новый скрипт проверки на "зависшие" сессии с абсолютно иным алгоритмом определения того, что сессия действительно зависшая.

Нужно протестировать, и потом отписаться

Сам скрипт пристегнут в zip-е к этому сообщению.
Что нужно сделать.
1. Распаковать из архива файл clear_stale.pl
2. Разместить скрипт в папке /usr/lib/cgi-bin/. Заодно проверить, что в данной папке присутствует файл conf.txt.
3. В расписание заданий планировщика cron (файл /etc/crontab) добавить новое задание

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

*/5 * * * * root /usr/bin/perl /usr/lib/cgi-bin/clear_stale.pl
4. Также, на время теста желательно отключить выполнение той команды, которая ранее убивала открытые сессии. Команда выглядела следующим образом:

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

2 * * * * root mysql -uroot –pваш_пароль < /root/clear.sql
(цифры в строке будут соответствовать вашей настройке времени выполнения данного задания, а вместо "ваш_пароль" будет указан ваш реальный пароль пользователя root для сервера баз данных MySQL)
Чтобы не удалять эту команду, а всего лишь прекратить ее выполнение, в начале этой строки нужно вписать "диез" (символ #).

Данный скрипт не удаляет реальные сессии, поэтому, те клиенты, у которых сеанс реально продолжается, не должны будут "убиваться" (пропадать из списка клиентов, подключенных к хотспоту). Важно при проверке убедиться в том, что ИМЕННО зависшие сессии ДЕЙСТВИТЕЛЬНО убиваются.

Если возникнут вопросы, пишите в личку или на мыло.

(Архив со скриптом из этого сообщения удален - в скрипте была ошибка. Исправленный скрипт пристегнут к одному из последующих сообщений)
Roman
Сообщения: 78
Зарегистрирован: 03 дек 2011, 00:25
Откуда: Харьковская область
Контактная информация:

Re: Обнуление данных в 11.00

Сообщение Roman »

Пару дней назад запустил этот скрипт, без особого внимания, как по мне, так ничего не изменилось.
Так-же недавно, установил webmin, действительно как для меня непрофессионального юзера хорошая вещь.
Стал просматривать всевозможный лог-файлы и отчёты, вспомнил, что пытался на сервере сделать web страничку с формой обратной связи, чтобы введённое отсылало мне на почту, но неработала функция sendmail, как оказалось, что не был установлен сам sendmail, короче всёравно ничего не получилось, долго разбираться не стал, забросил и подключил с сайта форму.
Так вот недавно просматривал чтоо там с почтой, на сервере, оказывается она работает как внутренняя почта и меня заинтересовал почтовый ящик для root и к моему удивлению в нём лежит огромная куча писем:
http://img841.imageshack.us/img841/3127/postab.jpg
Особенно поразило их количество, более 2000 писем!
И во всех писмах содержание такое:
http://img688.imageshack.us/img688/6850/messageqr.jpg
Или вот текстовый вариант:

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

Mail headers	View all headers | View raw message
From	root@server-inet (Cron Daemon)
To	root@server-inet
Date	08/03/2012 23:51
Subject	Cron <root@server-inet> /usr/bin/perl /usr/lib/cgi-bin/clear_stale.pl


Message contents	
DBI connect(':','',...) failed: Access denied for user 'root'@'localhost' (using
password: NO) at /usr/lib/cgi-bin/clear_stale.pl line 28
1 at /usr/lib/cgi-bin/clear_stale.pl line 28.
ERROR!!! Could not connect to DB on host!
Что это может значить?
Я так понял, что скрипт у меня не работает, правильно?
Аватара пользователя
Dmitry
Администратор
Сообщения: 1073
Зарегистрирован: 25 май 2011, 09:14
Откуда: г. Запорожье, Украина
Контактная информация:

Re: Обнуление данных в 11.00

Сообщение Dmitry »

Вот поэтому я и написал "проверить".
Просмотр скрипта показал, что в нем был указан путь к файлам конфигурации для моего сервера на мандриве (он отличается от пути к файлам для случая убунты). Сейчас эта ошибка исправлена, к этому сообщению пристегнут архив с подправленным скриптом.

Также, напоминаю, что нужно убедиться, что в папке /usr/lib/cgi-bin, в которую должен быть распакован скрипт, должен присутствовать файл conf.txt, а в нем - параметры для подключения к базе. Типа таких:

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

serv = localhost
base = easyhotspot
dbuser = easyhotspot
dbpass = easyhotspot
radcheck_table = radcheck
radacct_table = radacct
usr_group = usergroup
Потому как скрипт эти параметры (логин пароль и т.д.) берет именно из этого файла.

Ну и напоследок, те 2000 письма про ошибки, поступившие на почту рута можно быстрее всего грохнуть оодной командой:

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

sudo > /var/mail/root
(команда просто бездумно обнулит файл почты рута...

(Обновленная версия скрипта пристегнута к одному из сообщений ниже)
Roman
Сообщения: 78
Зарегистрирован: 03 дек 2011, 00:25
Откуда: Харьковская область
Контактная информация:

Re: Обнуление данных в 11.00

Сообщение Roman »

Здравствуйте Дмитрий.
Спасибо, я обновил скрипт и снова пришла почта от crona:

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

From	root@server-inet (Cron Daemon)
To	root@server-inet
Date	09/03/2012 13:11
Subject	Cron <root@server-inet> /usr/bin/perl /usr/lib/cgi-bin/clear_stale.pl


Message contents	
DBI connect(':','',...) failed: Access denied for user 'root'@'localhost' (using
password: NO) at /usr/lib/cgi-bin/clear_stale.pl line 31
1 at /usr/lib/cgi-bin/clear_stale.pl line 31.
ERROR!!! Could not connect to DB on host!
Ошибка уже в другом месте...
Я проверил, файл conf.txt есть и содержимое его тоже правильное.
Вобще хорошее дело sendmail, никогда не думал, что система может быть настолько информативна! :D
Аватара пользователя
Dmitry
Администратор
Сообщения: 1073
Зарегистрирован: 25 май 2011, 09:14
Откуда: г. Запорожье, Украина
Контактная информация:

Re: Обнуление данных в 11.00

Сообщение Dmitry »

в новой редакции скрипта файл начинается так:

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

#!/usr/bin/perl
$pw_d=`pwd`;
chomp $pw_d;
$lvar_file="$pw_d/conf.txt";
open (LVAR, "$lvar_file");
посмотрите, так ли у вас?
потому как ваше сообщение об ошибке гласит что скрипт не смог подключиться к базе, что и не удивительно, потому как попытка происходит с параметрами
логин root
пароль - нет пароля
Такое м.б. вызвано лишь считыванием неверных значений параметров подключения к базе, которые указаны как раз в файле conf.txt. Также, может быть в случае, если в вашем файле conf.txt указаны не те значения, которые программа использует для связи с базой (если вы их меняли при установке).
Roman
Сообщения: 78
Зарегистрирован: 03 дек 2011, 00:25
Откуда: Харьковская область
Контактная информация:

Re: Обнуление данных в 11.00

Сообщение Roman »

Всё как-то странно получается остальные скрипты работают а этот нет. И в базу данных, например через phpmyadmin я могу зайти как от root так и от easyhotspot, всё нормально. В папке cgi-bin лежат скрипты и у них владелец www-data а у этого скрипта владелец root, может сменить владельца на www-data?
Аватара пользователя
Dmitry
Администратор
Сообщения: 1073
Зарегистрирован: 25 май 2011, 09:14
Откуда: г. Запорожье, Украина
Контактная информация:

Re: Обнуление данных в 11.00

Сообщение Dmitry »

Таки нашел я в чем проблема была. Все в тех же путях. Не учел я, что крон запускает скрипт совсем из другого окружения, как следствие, он все-таки не добирается до истинного файла conf.txt. Еще раз исправил скрипт. Пристегиваю к данному посту исправленную версию.

Как увидеть результат работы скрипта? Он пишет свои сообщения в файл лога авторизации клиентов (тот, который можно просматривать в меню кассира, которое показывает список подключенных клиентов). Но пишет туда скрипт сообщение только в том случае, если он удалил одну (и/или более) зависшую сессию. Во всех остальных случаях никаких записей не выполняется (чтобы не засирать лог пустыми сообщениями).
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Roman
Сообщения: 78
Зарегистрирован: 03 дек 2011, 00:25
Откуда: Харьковская область
Контактная информация:

Re: Обнуление данных в 11.00

Сообщение Roman »

Спасибо Вам Дмитрий, всё получилось т на убунте!
Да, всё вроде успокоилось, cron перестал слать на почту рута ошибки.
Сейчас регулярно просматриваю список подлюченных клиентов, пока не видел, чтобы были сообщения об удалении зависших сессий.
Как можно посмотреть весь журнал на предмет удаления зависших сессий, чтобы убедится, что скрипт работает?
Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость