Lihuen
RSSRSS AtomAtom

Pykota

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.

Funcionamiento

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.

Instalación

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

pykota.conf 
que tiene que poder ser leído por todos los usuarios
pykotaadmin.conf 
con datos de la base de datos, solo el usuario pykota y el grupo pykota tienen que poder leerlo.
Este archivo tiene el nombre de usuario y contraseña para acceder a la base de datos de pykota en modo administrador.

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

Contadores de hojas

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

Gestión de cuentas de usuario

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

  • deny: rechaza los trabajos de los usuarios que no estén en la base de datos
  • external: ejecuta un comando externo antes de permitirles imprimir

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)

Comandos

Gestión de impresoras

Ejemplos de uso pkprinters, la herramienta para agregar y configurar impresoras en pykota

  • Agregar una impresora
pkprinters --add nombreImpresora
  • Agregar descripciones a las impresoras
pkprinters --description descImpresora nombreImpresora

Cada impresora puede tener una "tarifa" distinta a la hora de aplicar las cuotas.

  • Cambiar el costo de la impresión a 1 crédito por hoja
pkprinters --charge 1 nombreImpresora
  • Cambiar el costo de la impresión a 1 crédito por hoja y 2 créditos por trabajo
pkprinters --charge 1,2 nombreImpresora
  • Eliminar una impresora de la base de datos
pkprinters --delete nombreImpresora
  • Listar los datos de las impresoras
pkprinters -l

Gestión de usuarios

Ejemplos

  • Agregar 3 usuarios
pkusers --add usuario1 usuario2 usuario3
  • Establecer la política que se aplicará a la hora de cobrarle al usuario
pkusers --limitby balance

Las políticas de cobro que se pueden aplicar a un usuario son

  • quota : limita la impresión por el número de hojas por impresora.
  • balance : limita la impresión por el número de créditos en la cuenta (los créditos se pueden usar en cualquier impresora en este caso).
  • noquota : no limita las impresiones pero cuenta las hojas/trabajos de todas maneras.
  • nochange : no limita las impresiones ni descuenta créditos al usuario.
  • noprint : el usuario tiene prohibida la impresión
  • Balance: agregar 20 créditos a un usuario (pueden ser absolutos o relativos si se usa el prefijo + o -)
pkusers -b +20 usuario
  • Balance: establecer que el usuario tiene exactamente 20 créditos
pkusers -b 20 usuario
  • Eliminar un usuario
pkusers --remove usuario
  • Hacer que a un usuario las impresiones les cuesten el doble de lo establecido por la impresora.
pkusers --overcharge 2 usuario
  • Hacer que a un usuario las impresiones les cuesten la mitad de lo establecido por la impresora.
pkusers --overcharge 0.5 usuario
  • Listar usuarios
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

Configuración extra

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

Fuentes y recursos

 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