terça-feira, 27 de julho de 2010

Istalando Jasmine para bilhetagem de impressão.

A muito tempo venho tentando encontrar um software que me forneça informações sobre o que os usuários da minha rede andam imprimindo, e essa é uma necessidade não só minha mas de vários administradores de rede por esse mundão a fora, bem depois de muita pesquisa e muito teste encontrei alguns que supriram minhas necessidades, e o mais importante fosse de graça.

Hoje vou falar sobre um deles, chamado Jasmine, ele foi desenvolvido em PHP, Perl, python e MySQL, roda em plataforma Unix e funciona em conjunto 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.

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).

Sua instalação e configuração é simples porem requer um pouco de conhecimento na plataforma Linux e seus comandos básicos.

Pré requisitos:

- cups (e suas dependencias, pacotes de PPD’s e etc)
- httpd
- mysql-server
- python
- python-imaging
- php
- php-mysql
- php-gd
- perl
- python-devel

No CentOS podemos usar o comando yum e instalar todos os pacotes de uma só vez:
# yum install –y cups httpd  mysql-server python python-imaging php php-mysql  php-gd python-devel perl

Após instalar, vamos para o Jasmine . . .

Vamos primeiro baixar e configurar o banco do Jasmine:
# cd /tmp/
# wget http://nayco3.free.fr/Jasmine/Releases/0.0.3/JASmine-MySQL-0.0.3.tar.bz2


O mysql-server após a istalação vem sem senha para o usuario root, alguns SOs possuem scripts para configurar isso , mas, manualmente vamos alterar para não ter problemas de acesso indesejado ao banco de dados e/ou comprometimento de segurança.
# mysqladmin -u root password senha_nova

vamos descompactar o arquivo baixado:

#  tar -zvjf JASmine-MySQL-0.0.3.tar.bz2
# cd JASmine-MySQL-0.0.3


Vamos criar a base de dados do jasmine e importar os dados do jasmine:

# mysql -u root -p
# password: *****

# mysql> CREATE DATABASE print;
# mysql> GRANT ALL ON print.* TO jasmine@localhost IDENTIFIED BY ‘sql_password’;
# mysql> FLUSH PRIVILEGES;
# mysql> exit;
# mysql -u root -p print < jasmine.sql
# password: *****


Agora vamos configurar e instalar o backend do Jasmine para o cups:

# cd /tmp/
# wget http://nayco3.free.fr/Jasmine/Releases/0.0.3/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.
# cd ..
# 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 vim.
# vim 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.

Lembre-se: O Apache deve estar instalado com suporte a php e funcionando.
# cd /tmp/
# wget http://nayco3.free.fr/Jasmine/Releases/0.0.3/JASmine-Web-0.0.3.tar.bz2


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/html/.
# tar xjf JASmine-Web-0.0.3.tar.bz2 -C /var/www/html/
# cd /var/www
# mv JASmine-Web-0.0.3 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 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.
# vim 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. Reinicie o httpd com o comando:
# service httpd restart

Praticamente a instalação terminou, agora é so acessar o CUPS e instalar as impressoras (http://localhost:631).

Obs.: por padrão a intarface de configuração web do cups so pode ser acessada de dentro do Server, ou seja pelo localhost, se quiser acessar de outra maquina tem que configurar o arquivo /etc/cups/cupsd.conf.

Um detalhe importantíssimo para o correto funcionamento é que a URI(endereço da impressora) inicie com “jasmine:”

Exemplo de URI cups = socket://ip_do_servidor:9100
Exemplo de URI cups + jasmine = jasmine:socket://ip_do_servidor:9100
Para verificar os relatórios de acessar o http://ip_do_servidor/jasmine/

5 comentários:

yokoyama disse...

esse software coleta os dados de um pc ou faz diretamente da impressora.
porque por exemplo se o usuario configurar a impressoa da empresa em um outro notebook pessoal
ele vai conseguir imprimir. pois assim que voltar o cabo USB da empressora no PC da empresa, vai voltar a contagem das impressoes contando c/ as que foram impressa no outro pc privado?

Leandro Moreira disse...

Bom dia Yokoyama, nao sei se entendi muito bem sua pergunta, mas vou tentar explicar.

Voce instala ele em um servidor que sera se seuvidor de impressão.

ai vc compartilha as impressoras nesse servidor.

nas maquinas clientes vc vai apontar as impressoes para o servidor de impressao, ele vai bilhetar a impressao e mandar o job para a impressora.

se vc plugar o cabo direto na maquina cliente, realmente nao vai funcionar.

Espero ter respondido... qqr coisa posta ai, e obrigado por acessar o meu blog. Compartilhe com seus amigos... abraço.

wrj.net disse...

Bom dia, estou procurando a tempos algum programa que faça esse tipo de bilhetagem e navegando na net achei seu blog, me interessei muito, bom vamos lá, hoje eu trabalho com windows 2003 server, manutenção em banco de dados oracle, rede e hardwarwe sou bem iniciante em linux, resolvi pegar a distr Debian 6.05 e me aventurar, notei que vc utiliza o Centos, mas deve ter a mesma linha de raciocinio ou devo mudar para o Centos, se possivel me mande um e-mail com as instruções que deverei fazer meu é mail é wrj.net@ig.com.br

Grato pelo seu auxilio
Rogério

Leandro Moreira disse...

Olá Rogerio, e obrigado pelo contato.

O centos é derivado do HadHat o debian é diferente um pouco, principalmente as bibliotecas. mas o procedimentos acredito que nao mude nada.

Faz o teste ai e posta se teve dificuldade ou nao..

abraço.

Leandro Gouveia disse...

Bom dia Leandro,

estou com o seguinte erro:

E [18/May/2017:11:55:22 -0300] [CGI] jasmine: Unable to create lockfile \'/usr/lib/cups/backend/jasmine.lock\', exiting ! at /usr/lib/cups/backend/jasmine line 269.
E [18/May/2017:11:55:22 -0300] [cups-deviced] PID 29661 (jasmine) stopped with status 13!

Pode me ajudar??