Introdução
Gostaria de compartilhar com vocês uma necessidade que obtive na empresa onde trabalhei, que era controlar as impressoras e enviar mensalmente um relatório para o meu gerente. O relatório continha dados como Top20 usuários e o consumo mensal de papel.
Eu estava a procura de algum software ou interface que usava os logs do CUPS para poder emitir relatórios de estatísticas de uso dos usuários e impressoras, como os clientes são todos Windows, o log do CUPS contabilizava somente uma página fazendo meu relatório ser um fiasco.
Procurando no site do CUPS achei esse programa em PHP, Perl, python e MySQL chamado JASmine, fiz alguns testes antes de entrar em produção e notei que ele realmente atendia minha necessidade.
Você configura ele junto com o CUPS e quando sai uma impressão ele pega todos os dados e joga em uma base de dados em MySQL que posteriormente pode ser consultada em qualquer browser de internet via PHP (ex: Firefox ou Internet Explorer).
Sobre o JASmine
O JASmine está na versão 0.0.3 e pode ser baixado no próprio site no endereço:
http://jasmine.berlios.de/dokuwiki/doku.php
Ele é composto em 3 partes:
- A primeira parte é um banco de dados em MySQL.
- A segunda parte é um script em Perl para escutar as impressoras e guardar as informações de impressão na base de dados MySQL, utiliza também o programa pkpgcounter feito em python que conta números de páginas de impressão independente do formato (ex: PostScript, RAW, PCL, etc…).
- A última parte é a página em PHP5 que fica conectada ao banco de dados e nos fornece as informações referentes as impressões, algumas delas estão citadas abaixo:
nome do usuário, quantidade de folhas, hora e data da impressão.
título do arquivo impresso (receita-bolo.doc, eu_e_aninha.jpg)
total de impressão de cada usuário, cada impressora, cada servidor (se tiver mais que 1).
Bom, agora vamos com a mão na massa!
Requisitos necessários
Para a instalação do JASmine, certifique-se que o Apache, CUPS, MySQL, PHP version 5, Python e Perl estão instalados e funcionando no seu servidor.
Neste artigo não irei aprofundar a instalação do Apache, CUPS, MySQL, PHP5, Perl e Python, vou começar a explicar presumindo que está tudo instalado e configurado.
O JASmine foi instalado em um servidor OpenSuSE10.2, os comandos aqui citados foram feitos baseados nessa distribuição, mas nada impede de utilizá-la em outra distribuição, sendo que os passos são todos feitos em código fonte, o que pode alterar é a localização dos serviços ou programas.
Aconselho a ler o arquivo INSTALL que fica dentro das pastas JASmine-* caso haja dúvida, eu fiz apenas um resumo desse INSTALL que acho suficiente para a instalação do programa.
Baixando os arquivos
Feito a verificação dos softwares necessários vamos baixar o jasmine no site:
http://jasmine.berlios.de/dokuwiki/doku.php?id=downloads
Salve os arquivos:
JASmine-MySQL-0.0.3.tar.bz2
JASmine-Backend-0.0.3.tar.bz2
JASmine-Web-0.0.3.tar.bz2
JASmine-MySQL-0.0.3
Antes de descompactar o arquivo, vamos criar uma base de dados no MySQL com o nome de print ou se preferir coloque o nome que desejar. Vou mostrar utilizando o nome print.
# mysql -u root -p
password: *****
mysql> CREATE DATABASE print;
Depois de criar a base de dados, vamos criar e atribuir os privilégios do usuário que fará o acesso a esse banco.
mysql> GRANT ALL ON print.* TO [email protected]alhost IDENTIFIED BY ‘sql_password’;
FLUSH PRIVILEGES;
O jasmine pode ser instalado em um servidor CUPS e outro servidor web sem problemas, basta apenas setar o host para dar a permissão ao usuário jasmine. No meu servidor rodas os dois serviços (CUPS e APACHE), então o meu host ficaria só um, o localhost.
mysql> GRANT ALL ON print.* TO [email protected] ‘sql_password’;
mysql> FLUSH PRIVILEGES;
Terminamos de criar a base de dados, agora vamos descompactar o arquivo JASmine-MySQL-0.0.3.tar.bz2.
# tar -zvjf JASmine-MySQL-0.0.3.tar.bz2
# cd JASmine-MySQL-0.0.3
Agora pegue o arquivo jasmine.sql e vamos importar para nosso banco de dados MySQL com o comando:
# mysql -u root -p print < jasmine.sql
Depois de terminar essa etapa vamos para o JASmine-Backend-0.0.3.
JASmine-Backend-0.0.3
Vamos descompactar o arquivo JASmine-Backend-0.0.3.tar.bz2:
# tar -xvjf JASmine-Backend-0.0.3.tar.bz2
# cd JASmine-Backend-0.0.3
Dentro da pasta JASmine-Backend vamos descompactar o programa pkpgcounter-2.10.tar.gz e instalar usando o python. Lembre-se que o Python deve estar instalado no seu servidor, senão não será possível instalar o pkpgcounter.
# tar -xvzf pkpgcounter-2.10.tar.gz
# cd pkpgcpunter-2.10
# python setup.py install
Depois de instalar o pkpgcounter vamos voltar na pasta JASmine-Backend e vamos copiar o script em Perl chamado jasmine para a pasta /usr/lib/cups/backend, depois de copiado vamos na pasta backend em /usr/lib/cups/backend e vamos atribuir a permissão 755 no arquivo jasmine. Lembre-se que o Perl deve estar instalado no seu servidor senão o script não vai funcionar.
# cp jasmine /usr/lib/cups/backend/
# cd /usr/lib/cups/backend
# chmod 755 jasmine
# chown root jasmine
Vamos editar o arquivo jasmine e configurar nosso banco de dados. Use o editor de sua preferência, aqui estou usando o vi.
# vi jasmine
Procure pelas linhas do MySQL:
my $Dbhost=”MYSQL_HOST”; —-> Host onde se encontra o banco de dados.
my $Dblogin=”MYSQL_LOGIN”; —-> Login do usuário que vai acessar o banco.
my $Dbpassword=”MYSQL_PASS”; —-> Senha do usuário que vai acessar o banco.
my $DBdatabase=”MYSQL_DB”; —-> Nome do banco de dados do Jasmine.
E altere para:
my $DBhost=”localhost”;
my $DBlogin=”jasmine”;
my $DBpassword=”sql_password”;
my $Dbdatabase=”print”;
Procure pela linha:
my $Debug_Mode=1;
E altere para:
my $Debug_Mode=0;
Salve o arquivo e feche, reinicie o CUPS com o comando:
# /etc/init.d/cups restart
Agora vamos para etapa final, que é o JASmine-Web-0.0.3.
JASmine-Web-0.0.3
Lembre-se: O Apache deve estar instalado com suporte a php5 e funcionando.
Descompacte a pasta JASmine-Web-0.0.3.tar.bz2, renomeie a pasta JASmine-Web-0.0.3 para jasmine e coloque na pasta onde o apache procura o site. ex: /srv/www/htdocs/.
# tar -xvjf Jasmine-Web-0.0.3.tar.bz2
# mv Jasmine-Web-0.0.3 /srv/www/htdocs/jasmine
Entre na pasta jasmine que você acabou de mover, procure pelo arquivo config.php.dist e copie para o mesmo diretório com o nome config.php.
# cd /srv/www/htdocs/jasmine
# cp config.php.dist config.php
Agora vamos editar o arquivo config.php e configurar nosso banco de dados. Use o editor de sua preferência, no meu caso estou usando o vi.
# vi config.php
Procure pelas linhas:
// Database vars
$DB_host=”MYSQL_SERVER”; —> nome do host onde esta o banco de dados.
$DB_login=”MYSQL_USER”; —-> login do usuário que vai acessar o banco.
$DB_pass=”MYSQL_PASSWORD”; —-> senha do usuário que vai acessar o banco.
$DB_db=”MYSQL_DB”; —-> nome do banco de dados.
Altere para:
// Database vars
$DB_host=”localhost”;
$DB_login=”jasmine”;
$DB_pass=”sql_password”;
$DB_db=”print”;
Salve o arquivo e feche. Configure o apache para que ele possa reconhecer o php5 e abrir o index.php no arquivo de configuração do apache, que fica em /etc/apache2/httpd.conf. Feito a configuração, reinicie o apache com o comando:
# /etc/init.d/apache2 restart
Praticamente a instalação terminou, agora vamos instalar uma impressora e fazer o teste.
Instalando uma impressora e testando o JASmine
Agora vamos testar o JASmine instalando uma impressora e fazendo um impressão de teste. Depois da instalação o Cups fica com 2 opções, Quota Managed que utiliza o script do jasmine e o normal do cups, sem passar pelo jasmine. Abaixo veja o exemplo:
LPD/LPR Host or Printer —> configuração do cups sem o jasmine.
LPD/LPR Host or Printer (Quota Managed) —> configuração do cups com o jasmine.
Podemos testar de duas formas. A primeira é configurar uma impressora normalmente usando o jasmine e mandar imprimir para conferir se está tudo certo. A outra é para quem quer aprofundar mais os testes e usar um arquivo que cria uma impressora virtual, o bom é que não gasta papel. 🙂
Para isso você entra na pasta JASmine-Backend-0.0.3 e copia o arquivo dummy para o diretório /usr/lib/cups/backend .
# cp dummy /usr/lib/cups/backend
# chmod 755 dummy
#chown root dummy
Feito reinicie o cups com o comando:
# /etc/init.d/cups restart
Instale a impressora normalmente e na hora de escolher o device procure pela opção Really Virtual Printer for Testing Cups (Quota managed), e depois continue a instalação normalmente.
Lembrando que no Quota Managed é usado o script do jasmine.
Relatórios em PHP no Browser
Se a instalação ocorreu tudo bem, você instalou a impressora no cups e funcionou perfeitamente agora você pode abrir o seu browser preferido (no meu caso é o firefox) e digitar o endereço da página index.php que você configurou no apache para começar a ver os relatórios.
A página está em inglês e possui poucos recursos, mas você já pode visualizar impressão de cada usuário ou cada impressora utilizada, basta navegar nos menus.
Como eu precisava de alguns relatórios que o jasmine não fornecia eu abri os códigos em php e fui modelando as consultas de acordo com a minha necessidade. Confesso que não precisa ser nenhum expert em php pois mesmo não sabendo programar conseguir alterar alguns filtros e inserir um relatório de consulta por uma determinada data. Caso não agrade fique a vontade para alterar.
Abaixo estou colocando alguns screenshots das alterações que eu fiz:
Corrigindo Possíveis Problemas
baixo seguem algumas dicas para solucionar pequenos imprevistos durante a configuração do JASmine.
Verificar se os Softwares estão instalados no servidor. Apache, Cups, MySQL, Perl, Php versão 5, Perl e Python.
Verificar se o serviço mysql, apache2 e cups estão rodando (startados).
Verificar se a impressora de rede esta ligada (Parece que não mas acontece muito!).
Verificar se o usuário jasmine esta conseguindo conectar no banco de dados.
Verificar o caminho do pkpgcounter (isso ocorre quando não esta somando páginas no controle de impressão jasmine). Edite o arquivo jasmine que fica dentro do diretório /usr/lib/cups/backend e altere as seguintes linhas:
# Location of the python and pkpgcounter binaries
my $path_to_pkpgcounter=”/usr/bin/pkpgcounter”;
Procure o pkpgcounter usando o whereis ou locate e altere o seu caminho dentro do script jasmine.
# whereis pkpgcounter
pkpgcounter: /usr/local/bin/pkpgcounter
Altere a linha my $path_to_pkpgcounter=”/usr/bin/pkpgcounter” para o caminho que o whereis encontrou:
# Location of the python and pkpgcounter binaries
my $path_to_pkpgcounter=”/usr/local/bin/pkpgcounter”;
Página em php não abre? Verifique se o apache tem os módulos necessários para executar o php5. Verifique também se a conexão com o banco de dados do arquivo config.php esta correta, se o cups está rodando e o MySQL também.
Gostaria de agradecer a oportunidade de colaborar a minha experiência com vocês. Dúvidas ou críticas são bem vindas, se gostou deixe seu recado e compartilhe conosco. Até a próxima.
Últimos 5 artigos de Bruno Neves
olá estou começando a customizar os relatórios do Jasmine , para que atenda a minha necessidade,gostaria de saber como faço para o jasmine gerar os relatórios também por departamento(onde preciso editar)já que não adianta apenas criar um campo a mais na tabela do banco de dados , e como buscar por data.
Grato
Meu caro,
Seria possível disponibilizar como fez as alterações nos relatórios?
Estou com o cups + jasmine funcionando. Porém, gostaria de relatórios por data e por departamento.
grato
Prezado,
Instalei o JASmine e funcionou tudo muito bem, mas fiquei com uma dúvida no sreenshot que não apreceu para mim, buscar por data.
Como deixo isso disponibilizado para mim.
Grato
CORREÇÃO: na linha onde diz:
mysql> GRANT ALL ON print.* TO [email protected] ’sql_password’;
TROCAR POR:
mysql> GRANT ALL ON print.* TO [email protected] IDENTIFIED BY ’sql_password’;