Upload
sergio-pedroza
View
24
Download
0
Embed Size (px)
Citation preview
Relatrios de impresso em PHP com CUPS + JASmineIntroduo 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 arquivosFeito 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 -ppassword: *****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 binariesmy $path_to_pkpgcounter="/usr/bin/pkpgcounter";
Procure o pkpgcounter usando o whereis ou locate e altere o seu caminho dentro do script jasmine.
# whereis pkpgcounterpkpgcounter: /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 binariesmy $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!