PyKota no Arch Linux
November 24th, 2007 | by cecampos |Como havia falado anteriormente estou trabalhando em uma solução de impressão baseada em CUPS+PyKota+OpenLDAP.
Vou explicar melhor… o CUPS é velho conhecido de todos, o servidor de impressão mais utilizado hoje em dia no mundo opensource. O PyKota que talvez seja uma novidade: a função dele é permitir um maior controle sobre o que é impresso, por exemplo: você poderá informar que o usuário “joao” pode imprimir 10 páginas na impressora “hp” e 5 na “xerox” que o usuário “jose” não imprime e por aí vai (coisas que o CUPS não consegue sozinho). Ele atua como um backend para o CUPS, funcionando da seguinte maneira: o CUPS recebe a requisição de impressão, envia ao sistema do PyKota que analisa e julga as permissões do usuário, caso seja liberado, reenvia o processo ao CUPS que se encarrega da impressão. Caso o usuário não tenha permissão para imprimir (ou tenha ultrapassado sua quota) ele não reenvia o processo para o CUPS, logo não imprime; loga que a impressão foi negada (e o motivo) e pode até mesmo enviar email para o usuário explicando a situação… demais, não!? Bom, e onde entra o OpenLDAP nessa história? Simples, nele encontra-se toda a base de dados dos usuários, suas permissões e endereços de email. Mesmo que a documentação do PyKota afirme que Debian é a distribuição mais recomendada, a solução funcionou perfeitamente no Arch.
O CUPS é facilmente instalado no Arch através do pacman:
# pacman -S cups foomatic-db-ppd
Assim como o OpenLDAP:
# pacman -S openldap
Maiores detalhes para a instalação do CUPS e OpenLDAP podem ser encontradas no wiki.
Porém, como nem tudo é perfeito, o PyKota não tem pacote pronto para o Arch (na verdade não há para distro alguma), então teremos que fazer a instalação manualmente. Ele depende do Subversion, se você não tem em seu sistema, instale:
# pacman -S subversion
Agora, execute:
$ svn co svn://svn.librelogiciel.com/pykota/trunk pykota
$ cd pykota
$ python checkdeps.py
Agora não se assuste! Ele fará uma verificação de dependências e vai falhar em boa parte delas… agora teremos um pouco de trabalho. Você deverá seguir as dicas informadas pelo sistema, entrar nos sites informados e baixar os pacotes (no meu caso foram aproximadamente 10). Felizmente a instalação das dependências, mesmo que manual, é bastante simples e segue o esquema abaixo:
# tar zxpvf pacote.tar.gz
# cd pacote
# python setup.py install
Obviamente você deverá trocar “pacote” pelo nome do pacote salvo
Continue executando o “checkdeps.py” até que todas as dependências estejam satisfeitas, e então:
$ cd /path/do/pykota
# python setup.py install
Agora vamos criar um link simbólico para o PyKota para que ele funcione como um backend do CUPS:
# cd /usr/lib/cups/backend
# ln -s /usr/share/pykota/cupspykota cupspykota
Agora verifique o diretório conf e os exemplos de configuração que estão lá dentro. Edite, salve e os coloque no /etc/pykota (sem a extensão .sample) lembrando de configurar (descomentar) as opções relativas ao LDAP (ou outro sistema de banco de dados que você preferir). No caso específico do LDAP você precisará copiar o schema e ativá-lo no /etc/openldap/sldap.conf e reiniciar o daemon slapd, no MySQL você deverá incluir um banco e algumas tabelas… exemplos para todos os casos possíveis estão no diretório initscripts. Leia com MUITA atenção os arquivos, faça as alterações necessárias e configure seu banco de dados.
Feito isso reinicie o CUPS. Você verá que agora nas opções para adicionar impressoras há a opção das impressoras gerenciadas pelo PyKota! Basta adicionar uma impressora usando essa opção para que ela passe pelo PyKota antes de imprimir. Se você quer modificar uma impressora já existente, nâo se preocupe, basta adicionar “cupspykota:” logo após o “DeviceURI” da sua impressora no /etc/cups/printers.conf, ou seja se estiver:
DeviceURI socket://192.168.1.1
Deverá ficar:
DeviceURI cupspykota:socket://192.168.1.1
O gerenciamento das impressoras e usuários pode ser feito via shell, com os comandos “pkprinters”, “pkusers” e “edpykota”. Tente executá-los com a opção “–help” e veja as opções, são bastante simples.
Feito isso tente imprimir uma página de testes… se você configurou corretamente os arquivos tudo correrá bem. Caso não ocorra verifique o retorno do /var/log/lpr.log e também dos logs do CUPS.
Este é um procedimento um tanto quanto complexo, voltado pra usuários mais avançados… se você encontrar qualquer dificuldade entre em contato que ajudarei da melhor forma possível.
2 Responses to “PyKota no Arch Linux”
By Leandro on Nov 26, 2007 | Reply
Muito bom ver que o Arch está se dando bem em servidores (também)! Bom saber que essa implementação do PyKotas funciona bem, já é uma boa solução pra galera que gerencia algumas redes e o patrão reclama da quantidade de impressão feita, vai rolar uma boa economia pra empresa!
By davidsorin on Nov 26, 2007 | Reply
Bom guia, trabalhei com o pykota ano passado, uma coisa interessante com ele é que você pode implementar de maneira transparente em sua rede, assim que um usuario imprimir pela primeira vez no sistema ele automaticamente cadastro o usuario com o numero de quotas pre definidas .
Outra coisa que me ajudou bastante foi a possibilidade de enviar um email para o administrador(eu) avisando sobre o estouro de quota, sendo assim eu já avaliava (ate mesmo antes do usuario reclamar) se aumentava ou não a quota na hora…
E por fim o historico é bem preciso e um bom guia na hora de questionamento do usuario com relação a suas paginas …
parabens