Sei sulla pagina 1di 8

Relatrios de impresso em PHP com CUPS + JASmine

Introduo
Este meu primeiro artigo e gostaria de compartilhar com vocs uma necessidade que obtive na empresa
onde trabalho, que era controlar as impressoras e enviar mensalmente um relatrio para o meu gerente. O
relatrio continha dados como Top20 usurios e o consumo mensal de papel.

Eu estava a procura de algum software ou interface que usava os logs do CUPS para poder emitir relatrios
de estatsticas de uso dos usurios e impressoras, como os clientes so todos Windows, o log do CUPS
contabilizava somente uma pgina fazendo meu relatrio 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 produo e notei que ele realmente atendia minha necessidade.

Voc configura ele junto com o CUPS e quando sai uma impresso 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 verso 0.0.3 e pode ser baixado no prprio site no endereo:
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 informaes de
impresso na base de dados MySQL, utiliza tambm o programa pkpgcounter feito em python que
conta nmeros de pginas de impresso independente do formato (ex: PostScript, RAW, PCL, etc...).
A ltima parte a pgina em PHP5 que fica conectada ao banco de dados e nos fornece as
informaes referentes as impresses, algumas delas esto citadas abaixo:

nome do usurio, quantidade de folhas, hora e data da impresso.
ttulo do arquivo impresso (receita-bolo.doc, eu_e_aninha.jpg)
total de impresso de cada usurio, cada impressora, cada servidor (se tiver mais que 1).

Bom, agora vamos com a mo na massa!

Requisitos necessrios
Para a instalao do JASmine, certifique-se que o Apache, CUPS, MySQL, PHP version 5, Python e Perl
esto instalados e funcionando no seu servidor.

Neste artigo no irei aprofundar a instalao do Apache, CUPS, MySQL, PHP5, Perl e Python, vou comear
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 distribuio, mas nada impede de utiliz-la em outra distribuio, sendo que os passos so todos feitos
em cdigo fonte, o que pode alterar a localizao dos servios ou programas.

Aconselho a ler o arquivo INSTALL que fica dentro das pastas JASmine-* caso haja dvida, eu fiz apenas
um resumo desse INSTALL que acho suficiente para a instalao do programa.
Baixando os arquivos
Feito a verificao dos softwares necessrios 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 privilgios do usurio que far o acesso a esse
banco.

mysql> GRANT ALL ON print.* TO jasmine@CUPS_SERVER IDENTIFIED BY 'sql_password';
mysql> GRANT ALL ON print.* TO jasmine@WEB_SERVER IDENTIFIED BY 'sql_password';
mysql> 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 permisso ao usurio jasmine. No meu servidor rodas os dois servios (CUPS e APACHE),
ento o meu host ficaria s um, o localhost.

mysql> GRANT ALL ON print.* TO jasmine@localhost '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, seno no ser possvel
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 permisso 755 no arquivos jasmine. Lembre-se que o Perl deve
estar instalado no seu servidor seno o script no vai funcionar.

# cp jasmine /usr/lib/cups/backend/
# cd /usr/lib/cups/backend
# chmod 755 jasmine

Vamos editar o arquivo jasmine e configurar nosso banco de dados. Use o editor de sua preferncia, 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 usurio que vai acessar o banco.
my $Dbpassword="MYSQL_PASS"; ----> Senha do usurio 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 diretrio 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
preferncia, 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 usurio que vai acessar o banco.
$DB_pass="MYSQL_PASSWORD"; ----> senha do usurio 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 configurao do apache, que fica em /etc/apache2/httpd.conf. Feito a configurao, reinicie o
apache com o comando:

# /etc/init.d/apache2 restart

Praticamente a instalao 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 impresso de teste. Depois da
instalao o Cups fica com 2 opes, 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 ---> configurao do cups sem o jasmine.
LPD/LPR Host or Printer (Quota Managed) ---> configurao 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 no gasta papel. :)

Para isso voc entra na pasta JASmine-Backend-0.0.3 e copia o arquivo dummy para o diretrio
/usr/lib/cups/backend .

# cp dummy /usr/lib/cups/backend
# chmod 755 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 opo Really Virtual Printer
for Testing Cups (Quota managed), e depois continue a instalao normalmente.

Lembrando que no Quota Managed usado o script do jasmine.

Relatrios em PHP no Browser
Se a instalao 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 endereo da pgina index.php que
voc configurou no apache para comear a ver os relatrios.

A pgina est em ingls e possui poucos recursos, mas voc j pode visualizar impresso de cada usurio ou
cada impressora utilizada, basta navegar nos menus.

Como eu precisava de alguns relatrios que o jasmine no fornecia eu abri os cdigos em php e fui
modelando as consultas de acordo com a minha necessidade. Confesso que no precisa ser nenhum expert
em php pois mesmo no sabendo programar conseguir alterar alguns filtros e inserir um relatrio de consulta
por uma determinada data. Caso no agrade fique a vontade para alterar.

Abaixo estou colocando alguns screenshots das alteraes que eu fiz aqui na empresa.











Corrigindo Possveis Problemas
Abaixo seguem algumas dicas para solucionar pequenos imprevistos durante a configurao do JASmine.

Verificar se os Softwares esto instalados no servidor. Apache, Cups, MySQL, Perl, Php verso 5, Perl e
Python.

Verificar se o servio mysql, apache2 e cups esto rodando (startados).

Verificar se a impressora de rede esta ligada (Parece que no mas acontece muito!).

Verificar se o usurio jasmine esta conseguindo conectar no banco de dados.

Verificar o caminho do pkpgcounter (isso ocorre quando no esta somando pginas no controle de
impresso jasmine). Edite o arquivo jasmine que fica dentro do diretrio /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";

Pgina em php no abre? Verifique se o apache tem os mdulos necessrios para executar o php5. Verifique
tambm se a conexo com o banco de dados do arquivo config.php esta correta, se o cups est rodando e o
MySQL tambm.

Gostaria de agradecer a oportunidade de colaborar a minha experincia com vocs, embora eu seja um
usurio leigo. Dvidas ou crticas so bem vindas, se gostou deixe seu recado e compartilhe conosco. Afinal
Ns Amamos a Liberdade!

Potrebbero piacerti anche