CUPS + Jasmine (gerenciador de impressões e relatórios de impressão) Autor: José Rodrigues Filho Data: 08/10/2010 Ambiente utilizado Primeiramente ditarei o ambiente que utilizo e que está em funcionamento: Ubuntu Server 8.04 É necessário para nossos testes uma impressora USB, PARALELA ou de REDE. No exemplo a seguir tenho uma HP LaserJet Professional P1102w, é a nova HP Laser com rede sem fio, nela está configurado o IP 172.16.1.66.
Instalando: $ sudo aptitude update $ sudo aptitude install vim apache2 build-essential cupsys cups-pdf cupsys-driver-gutenprint $ sudo vim /etc/cups/cupsd.conf Altere a linha 17: Listen localhost:631 Para: Listen 631 Para quem não sabe fazer o vim aparecer numeração é simples, digite a tecla ESC e em seguida: :set nu Vamos agora dar permissão para acesso ao CUPS:
$ sudo vi /etc/cups/cupsd.conf E altere as linhas conforme abaixo: # Show shared printers on the local network. Browsing On DefaultAuthType Basic Allow From 172.16.1.54 Allow all E para termos acesso às paginas de administração: # Restrict access to the server... Order allow,deny Allow From 172.16.1.54 # Restrict access to the admin pages... Allow From 172.16.1.54 Allow all Agora reinicie o serviço: $ sudo invoke-rc.d cupsys restart Lembrando que o IP acima 172.16.1.54 é para ter acesso apenas da minha rede, altere conforme o IP da sua rede.
Samba Aqui fica a parte muito importante, geralmente muitas pessoas recebem um erro de "Acesso Negado: Não foi possível estabelecer uma conexão". Elas conseguem instalar a impressora, mas não é possível imprimir por acesso negado. Vamos resolver esse probleminha. Instalando o Samba: $ sudo aptitude install samba $ sudo mkdir /home/troca $ sudo chmod 777 /home/troca $ sudo vim /etc/samba/smb.conf Criando uma configuração simples no Samba para o funcionamento correto da impressora: $ sudo vim /etc/samba/smb.conf [global] workgroup = Servidor de Impressao netbios name = printserver security = share [troca] comment = Troca de Arquivos path = /home/troca public = yes
browseable = yes writable = yes read only = no create mask = 0700 directory mask = 0700 vfs object = audit [printers] comment = All Printers path = /var/spool/samba printable = Yes browseable = yes guest ok = yes plublic = yes writable = no load printers = yes cups options = raw use client driver = yes Reinicie o Samba: $ sudo invoke-rc.d samba restart
Jasmine + impressora de testes (economia de papel) Instale os pacotes abaixo: $ sudo aptitude install php5 mysql-server-5.0 php5-mysql libdbd-mysql-perl python python-imaging Agora no site http://jasmine.berlios.de/dokuwiki/doku.php, efetue o download dos arquivos: JASmine-MySQL JASmine-Backend JASmine-Web $ sudo wget http://nayco3.free.fr/Jasmine/Releases/0.0.3/JASmine-MySQL-0.0.3.tar.bz2 $ sudo wget http://nayco3.free.fr/Jasmine/Releases/0.0.3/JASmine-Backend-0.0.3.tar.bz2 $ sudo wget http://nayco3.free.fr/Jasmine/Releases/0.0.3/JASmine-Web-0.0.3.tar.bz2 A primeira etapa é criar o banco que vai armazenar os dados de impressão. $ sudo mysql -u root -p password: ***** mysql> CREATE DATABASE print; mysql> exit Agora vamos utilizar o script contido no arquivo JASmine-MySQL. $ sudo tar -jxvf JASmine-MySQL-0.0.3.tar.bz2 $ cd JASmine-MySQL-0.0.3 $ sudo mysql -u root -p print < jasmine.sql Crie um usuário no MySQL para gerenciar o banco de impressão. $ sudo mysql -u root -p mysql> GRANT ALL ON print.* TO jasmine@localhost identified by 'senha'; mysql> FLUSH PRIVILEGES;
mysql> exit Saia da pasta onde está agora: $ cd .. Dentro do JASmine-Backend existem os programas auxiliares que irão monitorar as impressões e gerar os dados a serem salvos no banco. Na pasta do JASmine-Backend existe o pkpgcounter que será instalado com o auxílio do Python. $ sudo tar -jxvf JASmine-Backend-0.0.3.tar.bz2 $ cd JASmine-Backend-0.0.3 $ sudo tar -zxvf pkpgcounter-2.10.tar.gz $ cd pkpgcounter-2.10 $ sudo python setup.py install Saída da pasta onde está agora: $ cd .. Na pasta raiz do JASmine-Backend existe um script em Perl chamado jasmine que deverá ser copiado para dentro do CUPS. $ sudo cp jasmine /usr/lib/cups/backend/ $ cd /usr/lib/cups/backend $ sudo chmod 755 jasmine $ sudo chown root jasmine Agora temos que editar nosso script para colocar as informações referentes ao banco de dados, localizados nas linhas 28, 29, 30, 31: $ sudo vim jasmine my $DBhost="localhost"; my $DBlogin="jasmine"; my $DBpassword="senha"; my $Dbdatabase="print"; Existe também na linha 41 do script informando que o mesmo está no modo debug. Altere esta linha para: my $Debug_Mode=0; Reinicie o CUPS e vamos a etapa final. $ sudo invoke-rc.d cupsys restart O JASmine-Web é a página que coleta as informações e as exibe na Web, volte para pasta onde você baixou os arquivos. $ sudo tar -jxvf JASmine-Web-0.0.3.tar.bz2 $ cd JASmine-Web-0.0.3/ $ sudo mkdir /var/www/jasmine $ sudo cp -r * /var/www/jasmine Neste momento iremos editar o arquivo com as configurações de acesso a banco. $ cd /var/www/jasmine $ sudo cp config.php.dist config.php $ sudo vim config.php // Database vars $DB_host="localhost";
$DB_login="jasmine"; $DB_pass="senha"; $DB_db="print"; Existe uma configuração para testes de impressão que o JASmine fornece para que possamos visualizar os resultados sem termos que gastar toner e 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. $ sudo cp dummy /usr/lib/cups/backend $ sudo chmod 755 /usr/lib/cups/backend/dummy $ sudo chown root /usr/lib/cups/backend/dummy Feito reinicie o CUPS com o comando: $ sudo invoke-rc.d cupsys restart Edite o arquivo jasmine dentro de: $ sudo vim /usr/lib/cups/backend/jasmine Altere a linha 67 de: my $lockfile = $backends_dir."/".$me.".lock"; Para: my $lockfile ="/tmp/".$me.".lock"; Salve o arquivo e feche, agora vamos fazer alguns testes para ver o sistema funcionando.
Instalando a impressora no servidor Acesse o CUPS: http://ip_do_servidor:631 Em "Administration" não vem por padrão selecionado "Share published printers connected to this system", selecione e clique em "Change Settings", você será redirecionado para uma página https para aceitar o certificado no browser, aceite e pronto, simples.
Em "Administration" clique em "Find New Printers". A impressora foi encontrada como mostra figura abaixo:
Clique em "Add This Printer":
Clique em "Continue".
No meu caso já esta selecionado o driver correto. Clique em "Add Printer". Algumas impressoras que configurei ele fica nessa tela e parece não ter adicionado a impressora, mas na verdade já adicionou, espere alguns segundos e clique em "Printers".
Instalando a impressora no Windows Esses procedimentos são como de costume mesmo, vá em iniciar, executar, digite o ip do seu servidor de impressão, \\172.16.1.68 no meu caso.
Lembra que na configuração do Samba tínhamos criado uma pasta troca, é para caso você queira facilitar as coisas, jogar o driver da impressora para agilizar o processo.
Dê dois cliques em cima da impressora e clique em sim.
Clique em ok.
Selecione o driver correto.
Aqui eu criei um arquivo de texto para teste de impressão.
Para facilitar quando chegarmos nos relatórios do Jasmine, criei um arquivo com outro nome.
Contabilizar as páginas no Jasmine
Agora para o Jasmine contabilizar as páginas vamos fazer a seguinte alteração editando o arquivo abaixo: $ sudo vim /etc/cups/printers.conf Na linha: DeviceURI socket://172.16.1.66 Altere para: DeviceURI jasmine:socket://172.16.1.66 Reinicie o CUPS. $ sudo invoke-rc.d cupsys restart Agora as impressões já estão prontas para ser contabilizadas, acesse o Jamine em: http://ip_do_seu_server/jasmine
Lembra aquela configuração lá em cima que fizemos para não gastar folha? Faça o seguinte para o Jasmine contabilizar as páginas sem gastar folhas nem toner, editando o arquivo abaixo: $ sudo vim /etc/cups/printers.conf DeviceURI jasmine:socket://172.16.1.66 Altere para: DeviceURI jasmine:dummy:socket://172.16.1.66 $ sudo invoke-rc.d cupsys restart
Não esqueça de mudar essa configuração depois para você poder imprimir de verdade no papel.
Exemplos de impressoras com Jasmine: USB: jasmine:usb://HP/LaserJet%20Professional%20P1102w PARALELA: jasmine:parallel:/dev/lp0 REDE: jasmine:socket://172.16.1.66 Exemplo dummy: jasmine:dummy:usb://HP/LaserJet%20Professional%20P1102w Até mais. :)
http://www.vivaolinux.com.br/artigo/CUPS-+-Jasmine-(gerenciador-de-impressoes-e-relatorios-de-impressao) Voltar para o site