IBQUOTA – Gerenciador de Impressão por Usuário

Autor: Paulo Roberto Junior – WoLF <paulorvojr at gmail.com>

Introdução

Neste artigo compartilharei informações sobre este projeto de qualidade
da UNICAMP. Todos os créditos deverão ser devidamente repassados aos
mesmos.

Toda empresa que precise trazer para o mundo real uma ou
diversas informações se preocupa muito com gastos em papel e,
atualmente, com o desperdício e a degradação do meio ambiente.

Ter controle sobre as impressões da empresa sempre foi alvo de
muitos diretores e donos de empresas, tanto em micro como em grandes
empresas.

Existem muitas soluções no mundo da informática para isso, desde pagas até gratuitas, outras baseadas em software livre.

Uma delas que venho demonstrar é o IBQUOTA.

Nada melhor que os próprios desenvolvedores do projeto para descrever o mesmo, então as informações abaixo foram extraídas do site oficial do IBQUOTA.

"O IBQUOTA é um gerenciador de quota de impressão por usuário,
ou seja, com ele cada usuário terá direito a uma quantidade específica
de folhas para imprimir. Este software é indicado, por exemplo, para
instituições de ensino, em que cada aluno deva ter a sua própria quota
de impressão.

As quotas e tentativas de impressão são guardadas em um banco
de dados (MySQL). A partir deste banco é possível ler e atualizar
informações dos usuários via WEB, através do Gerenciador Gráfico (GG)
do IBQUOTA (a parte WEB é feita em PHP).

Como funciona o IBQUOTA? Ele funciona entre o SAMBA e o
Gerenciador de Impressão (Ex. CUPS). O Samba é responsável pela
autenticação e compartilhamento entre computadores (FreeBSD, Linux,
Windows etc). Com ele, ainda, é possível até compartilhar impressoras.
Quando, por exemplo, um usuário está conectado em uma máquina Windows e
envia um arquivo para imprimir, o SAMBA pega este arquivo e o coloca na
fila de impressão da Impressora. A partir deste ponto é o Gerenciador
de Impressão que faz o serviço de enviar este arquivo para a impressora
propriamente dita.

Para o IBQUOTA funcionar são criadas duas filas de impressão:

  • VIRTUAL: A fila de impressão virtual é compartilhada através do SAMBA e configurada para que todos JOBs entrem como "pausados".
  • REAL: A fila de impressão real NÃO é compartilhada através do SAMBA, mas é configurada para imprimir tudo que chegar.

O IBQUOTA simplesmente fica checando se chegou algum job
na fila de impressão virtual, se chegar, é verificado se o dono da
impressão possui quota, se sim, o documento é movido para fila de
impressão real e as informações da impressão são gravadas no banco de
dados.

O importante é que a impressão fica transparente para o
usuário que quer imprimir. E ainda que o IBQUOTA é uma solução GRÁTIS e
LIVRE!"

Instalação

Primeiramente se faz necessário a instalação completa de um ambiente com sistema operacional baseado no Linux com kernel mínimo de 2.4.x.x mas o recomendado é o kernel 2.6.x.x.

A distribuição fica a critério e gosto, podendo ser desde Slackware, Red Hat, CentOS, Debian, Fedora, SuSE… todas funcionam.

Nos testes ele foi implementado em um CentOS, mas qualquer distribuição funciona.

Em segundo, precisamos de alguns serviços já pré-instalados e em perfeito funcionamento:

  • SAMBA
  • CUPS
  • MYSQL
  • APACHE com módulo PHP5
  • Uma cópia do fonte do IBQUOTA, disponibilizado em: ibquota2.2.2.tar.gz

Caso deseje baixar pelo terminal no Linux, utilizaremos o bom e velho WGET:

# wget http://www.ib.unicamp.br/ibquota/ibquota2.2.2.tar.gz

Próximo passo é alocar este pacote que baixamos para um diretório para que possamos trabalhar sem fazer uma bagunça.

Mova o pacote para o /opt/:

# mv ibquota2.2.2.tar.gz /opt/

Agora vamos para a instalação:

1. Descompactar o pacote .tar.gz:

# tar -xzvf ibquota2.2.2.tar.gz
# cd ibquota2

2. Editar o arquivo de configuração:

# vi ibquota.conf

Altere os parâmetros de banco de dados / usuário do banco etc conforme sua necessidade.

Seguem abaixo os principais parâmetros que você deve alterar:

#Tempo de espera em segundos
TEMPO_DE_ESPERA   10

#Path do Comando LPR
PATH_LPR    /usr/local/cups/bin/lpr

#Path do Comando LPSTAT
PATH_LPSTAT    /usr/local/cups/bin/lpstat

#Path do Comando LPRM
PATH_LPRM     /usr/local/cups/bin/lprm

#path para o comando mysql
PATH_MYSQL    /usr/local/mysql/bin/mysql

#nome do banco de dados IBQuota
#Padrao: IBQUOTA
NOME_BANCO    IBQUOTA

#host do banco de dados
#Padrao:  localhost
HOST_BANCO    localhost

#Porta que o PORTA_BANCO
#Padrao: 3306
PORTA_BANCO     3306

#login para acesso ao banco de dados
USUARIO_BANCO   LOGIN

#senha para acesso ao banco de dados
SENHA_BANCO     SENHA

Obs.: "NOME_BANCO", "HOST_BANCO" etc são parâmetros e não
devem ser alterados, pois não é um valor, ele faz referencia ao
sistema, portanto NÃO altere, apenas altere o que vem a sua direita,
que são os valores.

5. Criar o banco de dados. Entrar no MySQL:

# /usr/local/mysql/bin/mysql -p

Digitar a senha de root do banco.

Executar o script SQL ibquota2.sql:

mysql> source ibquota.sql

Será criado automaticamente o banco de dados do IBQUOTA.

Obs.: Não crie um banco de dados e depois importe as querys em
SQL, pois o SQL já cria um database, a menos que você saiba SQL e deixe
só o que interessa que é a adição das tabelas e campos. SQL é bem
simples.

6. Colocar o ibquota.pl para levantar automaticamente:

Linux: Copiar o script de inicialização

7. Configurar o GG (Gerenciador Gráfico).

Copie a pasta GG, para seu diretório do Apache, podendo ser em /var/www/html, /var/www/, /usr/local/htdocs/.

8. No arquivo de configuração do PHP (php.ini) o argumento
"register_globals" deve estar setado como "On" para que o GG funcione.

Ex: register_globals=Off

Altere para:

register_globals=On

O php.ini pode ser encontrado em /etc/php5/apache2/php.ini, /etc/php.ini, /etc/apache2/conf.d/php5/php.ini.

9. Acesse pelo seu browser: http://ip_do_servidor/gg

10. Cadastre as informações iniciais no GG:

  • Cadastro de Grupo
  • Cadastro de Usuário
  • Cadastro de Impressora
  • Atribuir Política de Impressão

FAQ – Perguntas frequentes do IBQUOTA

O IBQUOTA pode ser instalado em um Servidor de Impressão Windows?

NÃO, somente em sistemas operacionais como o FreeBSD, Linux, OpenBSD. Sistemas Unix em geral.

É possível montar um servidor de impressão com software livre?

SIM. Um servidor de impressão é constituído de Sistema
Operacional (Ex: FreeBSD, GNU/Linux Debian etc), sistema para fazer
autenticação e compartilhamento de dispositivos (Ex: SAMBA) e de um
gerenciador de impressão (Ex: CUPS). E caso necessite de controle de
quota de impressão por usuário, pode utilizar o IBQUOTA. 🙂

O IBQUOTA também gerencia quota de disco?

NÃO, o gerenciamento de quota de disco é nativo no Sistema Operacional.

O IBQUOTA suporta o gerenciador de banco de dados PostgreSQL?

Ainda não, hoje somente há o suporte para MySQL, mas está previsto para a versão 2.X funcionar com o PostgreSQL.

Se um arquivo contém 4 páginas e eu utilizar o "Páginas por
folha" com o valor 4, quantas páginas serão debitadas da minha quota?

O IBQUOTA irá computar uma única página da quota, pois o que realmente
interessa é a quantidade de folhas que sairá da impressora. Obs.: Foi
testado em uma impressora HP LJ 1220.

Por que o IBQUOTA deve ser executado como root?

Porque somente como root é possível remover a impressão de um usuário qualquer.

Perguntas técnicas

O que é o erro que aparece no meu arquivo de log?

09:48:45 19-12-2005 – ERRO – Problema na formação da SQL, verifique:
  select distinct impressora.fila_virtual
   from impressora, conjunto_impressora,politica
   where conjunto_impressora.cod_impressora=impressora.cod_impressora and
         conjunto_impressora.cod_politica=politica.cod_politica;
10:08:13 19-12-2005 – ERRO – Problema na formacao da SQL, verifique:
  insert into impressoes
         values (0,4,1,1,SYSDATE(),NOW(),1,’NONE’,0,’NONE’,,1);

Geralmente quando ocorre esta mensagem de erro no log é porque
o PATH_SPOOL não foi corretamente cadastrado no Gerenciador Gráfico.

O valor do PATH_SPOOL se encontra no arquivo de configuração do CUPS, cupsd.conf. E, o argumento que o contem eh: "RequestRoot".

Obs. 1: O CUPS e o SAMBA utilizam PATHs diferentes para guardar
o arquivo temporário de impressão, ou seja, cuidado para não confundir.

Obs. 2: Este problema também ocorre quando o IBQUOTA não
consegue identificar o formato do arquivo de impressão. Este problema
pode ser corrigido com a troca do driver de impressão.

Erro no Gerenciador Gráfico (GG): "Fatal error: Call to undefined function: mysql_connect()" ?

O erro que aparece no browser:

Fatal error: Call to undefined function: mysql_connect() in /var/www/html/gg/class_db.php on line 40

Quer dizer que o módulo php-mysql (para conexão entre o PHP e o
MySQL) não foi instalado, por este motivo o PHP não reconhece a função
mysql_connect(). Para solucionar o problema é preciso pesquisar como
instalar o PHP com suporte ao banco de dados MySQL.

MENSAGEM DE ERRO: lpr: error – unable to print file: client-error-document-format-not-supported

Quando aparece a mensagem de erro acima, quer dizer que o
cliente (máquina de onde foi enviado o job) está com a configuração da
impressora errada.

Quer dizer que o PPD (arquivo que descreve a
impressora) está errado. Procure outro arquivo PPD e modifique a
configuração da impressora atual. Após isto, remover e adicionar
novamente a impressora na estação.

Com o PPD errado, o cliente gera um formato de arquivo de impressão (Ex PS, PCL etc) que a impressora não entende.

Finalizando

Para aqueles que gostam de uma apresentação ou ver imagens do sistema, aí vão:

Linux: IBQUOTA - Gerenciador de Impressão por Usuário
Linux: IBQUOTA - Gerenciador de Impressão por Usuário

Extras e agradecimentos

Todos nós sabemos o quanto é doloroso achar drivers de diversas impressoras no Linux, a maioria temos que usar drivers antigos ou HP5MP, os sites abaixo são quase repositórios:

Obrigado a todos que leram este artigo e informo que o mesmo é
uma réplica da documentação oficial do IBQUOTA. Todos os artigos que
publico no VOL são originários de meu blog, que pode ser acessado em: www.blog.paulojr.info

Abraços a todos,

Paulo Roberto Junior


http://www.vivaolinux.com.br/artigo/IBQUOTA-Gerenciador-de-Impressao-por-Usuario

3 comentários sobre “IBQUOTA – Gerenciador de Impressão por Usuário

  1. Amigo, me conte uma coisa?

    Vc consegui fazer funcionar este “treco”?

    Sim, pq to enrolado com isso a uma semana e não tem “Cristo” que faça funcionar…
    Mais triste ainda é que parece que esta tudo certo!!! não retorna erro de especie alguma. MAS NÃO COLETA UMA UNICA IMPRESSAO!!!

    será que o amigo poderia me dar uma força?

    No aguardo de contato!

    Abr;

    Vilson Jorge

    • Jorge, roda o ibquota.pl na mão e coloca em modo debug, dai ele vai mostrando tudo pra vc.
      Acho q vc deve ter feito algo errado, o ibquota é simples e bem estável.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s