Ранее, в посте "Анализ статистики CUPS" я описывал как сохранить статистику принт-сервера в базе MySQL, сегодня выложу WEB-интерфейс, для анализа этой статистики.
Отказ от ответственности
Автор не несет ответственности за любые последствия которые могут наступить в результате установки и использования WEB-интерфейса CSC v.0.1, пользователь использует его "как есть" на свой страх и риск.
Что используем:
Gentoo
Apache 2.2
PHP 5.2
gd 2.0
MySQL 5.0
Модернизируем базу данных
К структуре БД, описанной ранее, добавляем две таблицы:
prn - для хранения информации о принтерах
users - для хранения информации о пользователях
Поскольку для наглядности просмотра статистики используются круговые диаграммы, необходимо установить графическую библиотеку.
Берем отсюда архив с WEB-интерфейсом и разворачиваем его в папку /var/www/localhost/htdocs
Необходимо указать хост, на котором крутится MySQL, имя пользователя и пароль на доступ к просмотру статистики, имя пользователя и пароль для доступа к БД.
На этом установку и настройку можно считать законченными.
Открываем в браузере главную страницу http://192.168.0.x/cups, авторизуемся и регистрируем принтеры и пользователей. Зарегистрировать можно только принтеры и пользователей информация о которых уже есть в БД, в таблице tasks_log, имена пользователей и принтеров выбираются из выпадающего списка. В подробном описании регистрации смысла не вижу, поскольку все достаточно просто и логично(по крайней мере для меня ;) ). По использованию тоже не должно возникнуть сложностей. Если что то будет непонятно - пишите в комменты, постараюсь по возможности ответить.
Да, когда я писал это безобразие, то разбираться с сессиями PHP мне было лень, поэтому некоторые параметры передаются через временные файлы, соответственно адекватная работа гарантирована только одному пользователю одновременно, по той же причине можно завести только одну учетную запись пользователя, если можно так сказать. Все же я админ, а не программер.
Еще раз повторюсь, что все делалось под себя. CSC означает CUPS Statistics Center, v.0.1 как бы намекает нам, что этот продукт далек от совершенства, поэтому претензии не принимаются (см. Отказ от ответственности), пожелания по добавлению функционала, или доработке существующего рассматриваются, но весьма неспешно, единственным критерием для внесения изменений будет то, насколько данный функционал меня заинтересует.
На этом пока все.
Upd. 26.10.2012
Перезалил сюда.
Отказ от ответственности
Автор не несет ответственности за любые последствия которые могут наступить в результате установки и использования WEB-интерфейса CSC v.0.1, пользователь использует его "как есть" на свой страх и риск.
Что используем:
Gentoo
Apache 2.2
PHP 5.2
gd 2.0
MySQL 5.0
Модернизируем базу данных
К структуре БД, описанной ранее, добавляем две таблицы:
prn - для хранения информации о принтерах
users - для хранения информации о пользователях
# mysql -D cups_statУстанавливаем gd
mysql> CREATE TABLE `prn` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(30) NOT NULL,
`model` varchar(30) NOT NULL,
`comment` varchar(128) NOT NULL,
`status` enum('0','1') default '1',
`balance` enum('0','1') NOT NULL default '1',
`b_date` timestamp NOT NULL default CURRENT_TIMESTAMP,
`p_rur` decimal(10,2) NOT NULL,
`p_usd` decimal(5,2) NOT NULL,
`c_type` varchar(30) character set utf8 collate utf8_unicode_ci NOT NULL,
`c_type1` varchar(30) character set utf8 collate utf8_unicode_ci NOT NULL,
`c_type2` varchar(30) character set utf8 collate utf8_unicode_ci NOT NULL,
`c_type3` varchar(30) character set utf8 collate utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=34 DEFAULT CHARSET=utf8;
mysql> CREATE TABLE `users` (
`id` tinyint(3) NOT NULL auto_increment,
`user` varchar(50) NOT NULL,
`name` varchar(128) default NULL,
`div` varchar(128) character set utf8 collate utf8_unicode_ci NOT NULL,
`status` enum('0','1') default '1',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=34 DEFAULT CHARSET=utf8;
Поскольку для наглядности просмотра статистики используются круговые диаграммы, необходимо установить графическую библиотеку.
# USE="jpeg png truetype" emerge -av gdУстанавливаем и настраиваем WEB-интерфейс
Берем отсюда архив с WEB-интерфейсом и разворачиваем его в папку /var/www/localhost/htdocs
# tar -xvzf ./cups.tar.gz -C /var/www/localhost/htdocs/Открываем и редактируем файл настроек /var/www/localhost/htdocs/cups/config.php
Необходимо указать хост, на котором крутится MySQL, имя пользователя и пароль на доступ к просмотру статистики, имя пользователя и пароль для доступа к БД.
На этом установку и настройку можно считать законченными.
Открываем в браузере главную страницу http://192.168.0.x/cups, авторизуемся и регистрируем принтеры и пользователей. Зарегистрировать можно только принтеры и пользователей информация о которых уже есть в БД, в таблице tasks_log, имена пользователей и принтеров выбираются из выпадающего списка. В подробном описании регистрации смысла не вижу, поскольку все достаточно просто и логично(по крайней мере для меня ;) ). По использованию тоже не должно возникнуть сложностей. Если что то будет непонятно - пишите в комменты, постараюсь по возможности ответить.
Да, когда я писал это безобразие, то разбираться с сессиями PHP мне было лень, поэтому некоторые параметры передаются через временные файлы, соответственно адекватная работа гарантирована только одному пользователю одновременно, по той же причине можно завести только одну учетную запись пользователя, если можно так сказать. Все же я админ, а не программер.
Еще раз повторюсь, что все делалось под себя. CSC означает CUPS Statistics Center, v.0.1 как бы намекает нам, что этот продукт далек от совершенства, поэтому претензии не принимаются (см. Отказ от ответственности), пожелания по добавлению функционала, или доработке существующего рассматриваются, но весьма неспешно, единственным критерием для внесения изменений будет то, насколько данный функционал меня заинтересует.
На этом пока все.
Upd. 26.10.2012
Перезалил сюда.
Статистика просто замечательная, чисто мое пожелание, не хватает вывода статистики по группам пользователей например занесение в группу пользователей и вывод статистики только по этой группе какие там пользователи и кто сколько напечатал , ну или хотя бы просто сколько в общем напечатала такая то группа человек. Было бы вообще суперски.
ОтветитьУдалитьБудет время, может быть и сделаю, в принципе отделы для сотрудников предусмотрены, можно будет по ним сделать.
ОтветитьУдалитьНашли ошибочку в Web интерфейсе: надо поправить
ОтветитьУдалитьif ($period==0)
{
$s='всё время учёта';
$query="SELECT `prn_name`,COUNT(DISTINCT `task_id`),SUM(`rep_num`), MAX(`page_num`), ROUND(SUM(`rep_num`)/COUNT(DISTINCT `task_id`)),ROUND( sum( `rep_num` ) / count( DISTINCT date_format( `p_date` , '%d %m %Y' ))) ,TO_DAYS( MAX( `p_date` ) ) - TO_DAYS( MIN( `p_date` ) ),DATE_FORMAT(MIN( `p_date` ),'%d.%m.%Y'), DATE_FORMAT(MAX( `p_date` ),'%d.%m.%Y') FROM tasks_log WHERE `prn_name`='$prn'";
надо добавить group by(`prn_name`)
А смысл группировать по принтеру в выборке по одному принтеру?
ОтветитьУдалитьБез этого выборка по одному принтеру не работает выдает ошибку и не отображает статистику.
ОтветитьУдалитьСтранно, у меня все работает, или я не там смотрю. Поподробнее можно? Это когда кликаешь на имя принтера в основном окне принтеров?
ОтветитьУдалитьЭто когда входишь в Принтер => Общая статистика за период и кликаешь на принтер со страници cups/index.php?prn=xerox4510l&period=0 и он не выдавал Статистика принтера xerox4510l за всё время учёта.
ОтветитьУдалитьGunther, еще вопросик как настроить Cron на запуск скрипта каждые 30 минут , так что бы он запускал скрипт и он работал, настроил crontab -e добавил в него строку запуска, скрипт добавил в группу lpadmin и дал права на запуск 777 скрипту , однако на следующий день когда обновляется фаил page_log надо на фаил давать права иначе скрипт не добавляет в базу данные из файла page_log
ОтветитьУдалить1. crontab - e */30 * * * * /var/www/cups/script.pl
ОтветитьУдалить2. Какой дистрибутив используете? Кому и какие права даны на page_log по умолчанию?
Ubuntu 8.04 права rw r r походу стоят по умолчанию, У меня было в кроне не так прописано щас попробую будет ли обновляться просто было прописано так
ОтветитьУдалить30 0 * * * /var/www/cups/cups.pl
Таких прав должно быть достаточно, чтобы любой пользователь мог читать page_log. То что было прописано в crontab, запускало скрипт ежедневно в 0 часов 30 минут.
ОтветитьУдалитьGunther, добрый день не подскажешь , как в БД поправить кодировку , что бы в БД имена пользователей русские нормально отображались.. а то пишет в utf8_general_ci вот такую вот крякозябру Матвеев Ð� ваыв
ОтветитьУдалитьСмотри /etc/my.cnf
ОтветитьУдалить[mysql]
character-sets-dir=/usr/share/mysql/charsets
default-character-set=utf8
[mysqladmin]
character-sets-dir=/usr/share/mysql/charsets
default-character-set=utf8
[mysqlcheck]
character-sets-dir=/usr/share/mysql/charsets
default-character-set=utf8
[mysqldump]
character-sets-dir=/usr/share/mysql/charsets
default-character-set=utf8
[mysqlimport]
character-sets-dir=/usr/share/mysql/charsets
default-character-set=utf8
[mysqlshow]
character-sets-dir=/usr/share/mysql/charsets
default-character-set=utf8
[mysqld]
character-set-server = utf8
default-character-set = utf8
Все поправил , но в Phpmyadmin базе по прежнему такая же крякозябра сравнение баз стоит utf8_general_ci , фаил /etc/mysql/my.cnf поправил, но эфект тот же в веб интерфейсе все норм отображается , а вот в базу записывается кракозяброй.
ОтветитьУдалитьНа главной странице phpmyadmin в поле "Сопоставление соединения с MySQL:" нужно выбрать utf8_general_ci.
ОтветитьУдалитьВ какой кодировке отображается phpmyadmin? Если не UTF-8, что происходит с отображением имен пользователей, если выставить UTF-8 вручную. Какая локаль стоит на сервере? (посмотреть вывод команды locale в консоли)
Локаль стоит LANG=ru_RU.UTF-8
ОтветитьУдалитьLC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
LC_ALL=
Сопоставление соединения с MySQL: utf8_general_ci Сравнение utf8_general_ci
MySQL-кодировка: UTF-8 Unicode (utf8)
Странно. С такими настройками должно быть все нормально. Может быть глюк конкретной версии phpmyadmin. MySQL явно работает корректно, отдает в UTF-8, как и задумывалось. WEB-интерфейс так же заточен под юникод.
ОтветитьУдалитьПриветствую!
ОтветитьУдалитьархив с депозита убрали.
Можно Вас попросить выложить его заново или на почту прислать.
Заранее спасибо!
Перезалил - http://depositfiles.com/files/ekt1a9p9t
ОтветитьУдалитьОгромное спасибо!
ОтветитьУдалитьЕще раз можно веб-интерфейс выложить? ))
ОтветитьУдалитьМожно, конечно. Только вот не сегодня. :) В понедельник - вторник перезалью.
ОтветитьУдалитьУра, понедельник ! :)
ОтветитьУдалитьВот уж не согласен, просто "... понедельник"
ОтветитьУдалитьСобственно вот - http://depositfiles.com/files/hg0ijsnle
Здравствуйте, можно ещё раз попросить выложить архив? Наверное уже достали этим...
ОтветитьУдалитьДень добрый, на днях выложу. С переездом на новый ноут архив где то затерялся, так что нужно искать. Кстати, на свежих версиях PHP возможны всякого рода warning'и, пока с ними не разбирался, ибо лень... :)
ОтветитьУдалитьСпасибо, посмотрим что там :)
ОтветитьУдалитьЕщё и скрипт парсинга тоже помер (архив) :)
Выложил -http://depositfiles.com/files/adc4nofwo -раз, http://depositfiles.com/files/x3ake60hi - два.
ОтветитьУдалитьЗдравствуйте. На php-5.2.8 и gd-2.0.35 на диаграммах вместо подписи были кракозябры. Решение подсмотрено на http://stackoverflow.com/questions/198007/php-function-imagettftext-and-unicode
ОтветитьУдалитьМодификации подверглись /var/www/htdocs/cups/img.php и /var/www/htdocs/cups/img1.php
Там где используется функция imagettftext(), перед ней добавить:
$text = mb_encode_numericentity("Количество страниц",
array (0x0, 0xffff, 0, 0xffff), 'UTF-8');
предварительно так же заменив в imagettftext() аргумент "Количество страниц" на $text.
Эти строки приведены в качестве примера.
В остальных случаях поступить аналогичным образом лишь заменяя соответствующий текст.
День добрый! Спасибо большое! Если вдруг придется допиливать, буду знать куда копать. :)
ОтветитьУдалитьДа, все забываю уточнить - записи в page_log попадают не зависимо от того удалось напечатать задание или нет, поэтому в результате получаем не статистику напечатанных страниц, а статистику того, сколько страниц хотели напечатать. Ну да для целей приближенного анализа загрузки принтеров вполне сойдет.
Здравствуйте ещё раз, комментарий\исправления :)
ОтветитьУдалитьНа ubuntu 10.10 не работали круговые диаграммы, надо убрать кавычки около параметра IMG_ARC_PIE в img.php
Спасибо за труд! :)
Выложите ещё раз веб-интерфейс пожалста, заранее благодарю
ОтветитьУдалитьПостараюсь найти и выложить, скорее всего на след. неделе. Только имейте в виду, делалось все весьма давно и на свежих версиях php работает криво. Так что придется править самостоятельно.
ОтветитьУдалитьА не, обманул, уже нашёл и выложил http://depositfiles.com/files/nb7h4nuar :)
ОтветитьУдалитьСпасибо, если все получится - поделюсь :-)
ОтветитьУдалитьВсё отлично, заработало без бубна, платформа ubuntu server 12.10
ОтветитьУдалитьНу, успехов. :)
ОтветитьУдалитьА еще разок выложить можно?
ОтветитьУдалитьНе знаю на сколько это возможно но прошу вновь перезолить ссылку?
ОтветитьУдалить