Pykota es un software para implementar cuotas de impresión con cups o lprng. Permite acceder a la información de usuarios utilizando distintas bases de datos como postgresql y ldap.
En este documento se detalla como hacer una instalación sencilla de pykota utilizando postgresql como base de datos para guardar la información de impresoras y usuarios.
Para que los distintos usuarios puedan loguearse en el servidor para imprimir se puede usar el paquete de Lihuen 2.01 cupslogin que se integra con Gnome.
pykota agrega un backend para cups. Para utilizarlo debemos agregar en la url de la impresora "pykota://" al comienzo de el uri.
Por ejemplo una impresora compartida con samba con el siguiente uri.
smb://servidor/impresora
Pasaría a ser (para que pykota cuente los trabajos antes de enviarlos al servidor)
pykota://smb://servidor/impresora
O bien para el puerto paralelo
parallel:
Pasaría a ser
pykota://paralell:
Si no cambiamos el uri de esta manera pykota no podrá controlar los trabajos que pasan a la impresora.
Descargar pykota desde http://www.pykota.com/software/pykota/download/
Descomprimir el paquete y ejecutar "./pksetup debian", este script va a hacer un "apt-get update" y a descargar otros paquetes. Además crea una configuración por defecto, instala postgresql y crea su base de datos de usuarios ahí.
Hay que chequear que se haya instalado pkpgcounter que es una aplicación de pykota para contar las páginas por software. Sino hay que descargarlo desde la página de pykota e instalarlo.
Archivos de configuración En /etc/pykota/ hay 2 archivos de configuración
En pykota.conf se pueden configurar la mayoría de las opciones de pykota (el resto se hace con unos comandos que pongo más adelante)
Dirección de correo a la que va a notificar cuando pykota falle
crashrecipient : pykotacrashed@librelogiciel.com
Configuración del servidor SMTP para las notificaciones
smtpserver : urldelservidordemail
Posfijo para las direcciones de mail de los usuarios. Si agregamos un usuario sin indicar su dirección de mail se asume este posfijo, si lo de abajo está en blanco se asume la url del servidor. Por ejemplo "pkusers --add usuario" asume que el usuario tiene la dirección de mail usuario@posfijo o usuario@urldelservidordemail dependiendo si llenamos el campo de abajo
maildomain :
Nombre del administrador
admin : cups
Email del administrador (para que reciba las notificaciones cuando los usuarios se quedan sin cuotas
adminmail :
El siguiente indica quien recibe un mail cuando un usuario se queda sin cuota las opciones son DevNull (no enviar mail), User, Admin y Both (el administrador y el usuario reciben un mail
mailto : both
Pasa los nombres de usuario a minúscula, esto es importante en dominios windows porque si este campo está seteado en "No" el usuario "IMPRESora" y "impresora" son dos usuarios distintos con cuotas distintas.
utolower : Yes
El siguiente campo determina que pasa cuando falla el backend (falla la impresión), se puede optar por descontar o no el trabajo de la cuota del usuario con charge y nocharge también existe la opción "retry:numDeIntentos:delayEnSegundosEntreReintentos" para que pykota vuelva a enviar el trabajo
onbackenderror : nocharge
Método para contar las hojas antes de enviar el trabajo a la impresora (puede ser solamente por software)
preaccounter : software()
Método para contar las hojas luego de enviar el trabajo (puede ser hardware o software) en hardware hay que poner un script entre los paréntesis para que imprima en pantalla el contador de hojas de la impresora, esta información se puede obtener por el puerto paralelo, smnp o appletalk dependiendo de la impresora. En se pueden encontrar los archivos pagecount.* y el script waitprinter.sh para el accounter por hardware
accounter : software()
El campo de abajo indica que hacer si falla el accounter las opciones son stop o continue con stop se cancela el trabajo y con continue pueden inducirse trabajos gratuitos cuando falla el accounter
onaccountererror : stop
Configuración por impresora: se pueden configurar individualmente los accounters para cada impresora individualmente
[Virtual_Printer] preaccounter : software() accounter : software() [Virtual_Printer_Pykota] preaccounter : software() accounter : software()
El siguiente campo define que hacer cuando un usuario que no está en la base de datos de pykota (entre otras cosas). Los valores posibles son deny, allow y external
El ejemplo de abajo agrega a los usuarios que quieran imprimir pero no existen en la base de datos.
policy : external(pkusers --add --skipexisting --limitby noquota --description Added automatically\ $PYKOTAUSERNAME && edpykota --add --skipexisting --printer $PYKOTAPRINTERNAME $PYKOTAUSERNAME)
Ejemplos de uso pkprinters, la herramienta para agregar y configurar impresoras en pykota
pkprinters --add nombreImpresora
pkprinters --description descImpresora nombreImpresora
Cada impresora puede tener una "tarifa" distinta a la hora de aplicar las cuotas.
pkprinters --charge 1 nombreImpresora
pkprinters --charge 1,2 nombreImpresora
pkprinters --delete nombreImpresora
pkprinters -l
Ejemplos
pkusers --add usuario1 usuario2 usuario3
pkusers --limitby balance
Las políticas de cobro que se pueden aplicar a un usuario son
pkusers -b +20 usuario
pkusers -b 20 usuario
pkusers --remove usuario
pkusers --overcharge 2 usuario
pkusers --overcharge 0.5 usuario
pkusers -L
Varios comandos pueden usarse sin pasar el nombre de usuario como argumento, en estos casos consideran que la acción se realiza en todos los usuarios.
Por ejemplo ponemos el valor de overcharge en 1 para todos los usuarios:
pkusers --overcharge 1
Además de lo configurado en pykota podemos automatizar la renovación de las cuotas utilizando cron.
Por ejemplo podemos agregar en /etc/cron.monthly/ un script, para que renueve las cuotas mensualmente, con el siguiente contenido:
#!/bin/bash pkusers --balance 200
Ante cualquier duda o inconveniente no dudes en escribirnos un email a soportelihuen arroba linti.unlp.edu.ar (Sin los espacios) O visitar nuestros Foros. http://lihuen.linti.unlp.edu.ar/foros