INTRODUCCIÓN GNU/LINUX a lo largo de su desarrollo ha logrado suplir muchas de las necesidades de usuarios y empresas, un ejemplo de esto es que facilita la implementación de un Servidor de Impresión o “Print Server”, necesitando pocos recursos en hardware, ademas que cuenta con una gran base de datos de drivers para una gran variedad de modelos de impresoras para el funcionamiento correcto en cualquier sistema GNU/LINUX. Estos sistema de impresión permiten centralizar lo que es trabajos de impresión, así el administrador podrá tener control y un detallado informe sobre el recurso utilizado. Ademas que puede especificar que equipos pueden imprimir en esta impresora y así evitar que departamentos diferentes hagan uso de este recurso y poder llevar un control total. Y para lograr todo esto se utiliza el paquete para servidor de impresión llamado CUPS.
QUE ES CUPS Cups (Common Unix Printing System) generalmente abreviado CUPS, es un sistema de impresión modular para sistemas operativos de tipo Unix que permite que un computador actúe como servidor de impresión.
COMPONENTES DE CUPS Cola de Impresión o Spooling: Los documentos que van llegando al servdor de impresión son cargados en una área del disco para almacenarlos mientras que se imprime el trabajo anterior, cuando se termina con el documento el servidor busca en el buffer el siguiente trabajo para imprimir.
Planificador: EL planificador de CUPS implementa IPP (Internet Printing Protocol) sobre HTTP/1.1. Una aplicación de ayuda (cups-lpd) convierte peticiones de LPD a IPP. El planificador también provee una interfaz web para administrar los trabajos de impresión, la configuración del servidor y para brindar documentación de CUPS mismo.
Sistema de Filtros: Antes de imprimir un trabajo este pasa por el sistema de filtros para identificar el lenguaje/formato en el que la impresora acepta la información o sea a formatos que la impresora conozca (como tipo de fuente, codificación, etc).
Esquema de Funcionamiento de CUPS
PROCESO DE IMPRESIÓN Cuando un cliente quiere imprimir algo en una impresora que es compartida por un PrintServer, básicamente el proceso que se lleva a cabo internamente seria el siguiente. El cliente inicia el proceso de impresión, el sistema busca la impresora predeterminada y envía el trabajo hacia ella por la red, luego este es recibido por el planificador que luego pasa el trabajo al buffer (donde esperara su turno para ser impreso), cuando CUPS toma el trabajo que esta almacenado en el buffer, lo pasa por los filtros para identificar cual es el formato/lenguaje que entiende la impresora a la cual ha sido enviado el trabajo, luego hace uso de los backends (cable usb, cable de red, paralelo, etc) que es el medio por el cual esta conectada la impresora al printserver, para finalmente ser impreso. Esto seria muy básicamente el proceso que se realiza desde que el cliente envía la impresión hasta que el trabajo es impreso.
HERRAMIENTA DE TRABAJO Para la implementacion de este PrintServer se utilizo una de la maquinas destinadas para pruebas en el area de sistemas. Especificaciones Técnicas del PrintServer y de la Impresora a utilizar Ipakc Procesador Intel Celeron 4,9 MH. Memoria Ram de 128 Mb. Tarjeta de Red OnBoard. Dos puertos USB Frontales. Impresora HP LaserJet 1020 conectada al PrintServer mediante uno de los usb frontales. Como podemos ver no es una maquina súpuer potente en cuestión de hardware y procesamiento... pero en GNU/LINUX es así, se necesita muy poco para brindar un servicio excelente.
PAQUETES NECESARIOS PARA IMPLEMENTAR PRINTSERVER EN DEBIAN LENNY
Como siempre lo he dicho, la descarga de paquetes en GNU/LINUX es demasiado facil con el uso de apt, y solo basta con un par de ordenes para tener instalado todo lo que necesitamos para nuestra implementación. Antes de empezar con la descarga de los paquetes se debe aclarar la función que cumple la herramienta Foomatic y el sistema Gutenprint.
Foomatic: Foomatic es un sistema de impresión diseñado para hacer más fácil configurar impresoras comunes para usarlas en Debian (y otras distribuciones). Proporciona el enlace entre el servidor de impresión (como CUPS) y su impresora real, diciéndole a su equipo cómo procesar los archivos enviados a la impresora. Gutenprint: Es un paquete de controladores para una gran cantidad de impresoras como Canon, Epson, Lexmark, HP y, en general, para cualquier dispositivo basado en PCL que consigue una calidad de impresión igual o superior a la realizada con el driver proporcionado por el fabricante. Ahora teniendo claro esto, en una terminal tecleamos apt-get install cups cups-drivergutenprint gutenprint-locales foomatic-db foomatic-db-gutenprint foomatic-dbengine foomatic-filters foomatic-db-hpijs cups-bsd foo2zjs que los paquetes necesarios para formar nuestro printserver.. CUPS: Sistema de impresión modular para sistemas operativos de tipo Unix que permite que un computador actúe como servidor de impresión. Cups-driver-gutenprint: Paquetes de drivers de impresión para CUPS. Gutenprint-locales: Para que los programas que utilizan gutenprint impriman mensajes diferentes al ingles. Foomatic-db: Este paquete contiene la base de datos de una impresora distribuida por OpenPrinting para la mayoría de controladores comunes. Foomatic-db-gutenprint: Este paquete incluye soporte para impresoras que usan la suite de controladores de impresión Gutenprint. Foomatic-db-engine: Este paquete contiene los programas dependientes de la arquitectura que se necesitan para configurar y mantener el sistema foomatic. Foomatic-filters: Este paquete contiene los filtros usados para convertir los datos PostScrip de entrada en el formato nativo de impresoras. Foomatic-db-hpijs: Este paquete incluye soporte para impresoras que usan el controlador de impresora HPIJS, particularmente de chorro de tinta y láser de HP. cups-bsd: Este paquete proporciona los órdenes BSD par interactuar con CUPS. Foo2zjs: Este es el driver correspondiente al modelo de la impresora a utilizar, dado que en el paquete foomatic-db no esta incluido. Ya teniendo un breve descripción de los paquetes a instalar, procedemos a la descarga. Esto tomara un tiempo dependiendo de la velocidad de conexión a Internet. Lo primero que vamos a hacer después de que halla terminada la descarga de los paquetes es irnos a realizar un respaldo al archivo de configuración de CUPS cupsd.conf, luego de esto procedemos a editarlo. cp cupsd.conf cupsd.conf.bk, asi hacemos el respaldo y ahora con nuestro editor de texto editamos el archivo cupsd.conf para levantar nuestro PrintServer.
pico /etc/cups/cupsd.conf y modificamos las siguientes opciones según sea nuestra necesidad.
CONFIGURACION ARCHIVO PRINCIPAL CUPS En el apartado Log general information in error_log - change "info" to "debug" for troubleshooting elegir la opcion de como nos presentara la informacion en los logs, en este caso se establece en modo debug la directiva LogLevel. LogLevel debug Luego en el apartado Only listen for connections from the local machine, borramos el valor Listen localhost:631 y ponemos como directiva Port 631 o Listen 631 cualquiera de las dos formas es valida. Port 631 Ahora en el apartado Show shared printers on the local network dejamos tal cual los valores de la directivas como están, para que cuando cups se inicie en nuestro servidor pueda mostrar todas las impresoras compartidas en la red (ya es tu decisión) si por algún motivo no lo quieres asi cambia. BrowseAllow all
por
BrowseAllow deny Pasamos al siguiente apartado Default authentication type, when authentication is required por defecto el valor de esta directiva es Basic, esta directiva es para cuando realizamos cambios que requieran la contraseña del administrador del sistema y los datos (como la contraseña) viajen seguros por la red. Entonces cambiamos el valor de esta directiva a Digest y agregamos otra directiva DefaultEncription DefaultAuthType Digest DefaultEncryption Required Seguimos con el apartado Restrict access to the server, en esta opción podemos definir por rango de red o solo por una dirección ip quienes pueden accesar vía web al PrintServer. Allow localhost Allow 192.168.0.* Continuamos con el apartado Restrict access to the admin pages, esta es muy importante ya que definimos por ip quien podrá ejercer cambios administrativos por medio de la interfaz web de nuestro CUPS (aunque para estos cambios la autenticación es requerida, recordemos que la habilitamos en el apartado Default Authentication type... pero como somos muy precavidos vamos a restringir este acceso) Allow localhost Allow 192.168.0.210
Ahora pasamos al apartado Restrict access to configuration files, muy importante para definir quienes pueden acceder al archivo de configuración del CUPS el cual es cupsd.conf via web, repito es importante restringir el acceso. Allow localhost Allow 192.168.0.210 Hasta aquí hemos terminado con la configuración de CUPS (lo básico, por que hay muchas opciones que se pueden añadir al archivo de configuración y todas estas están en la documentación oficial). Ahora reiniciamos cups /etc/init.d/cups restart para que todos estos cambios que hicimos se apliquen y acto seguido revisamos los logs para ver que nada haya fallado.
AÑADIENDO LA IMPRESORA A CUPS Después de tener cups configurado y con los respectivos drivers para la interacción con nuestra impresora, llego el momento de añadirla para que gestione sus colas y nos de un reporte sobre ella. Para esto utilizaremos la interfaz web ya que es muy intuitiva y muy fácil.
AGREGANDO LA IMPRESORA Primero nos cercioramos de que si la este reconociendo el sistema con el siguiente comando. lsusb y la salida debe ser algo como esto. Bus 001 Device 006: ID 03f0:2b17 Hewlett-Packard LaserJet 1020 Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub en la parte resaltada se puede notar que si es reconocida por el sistema al ser conectada al puerto usb. Ahora ingresamos a la interfaz web de CUPS de la siguiente forma. http://ipcups:631
Al momento de ingresar este sera el aspecto de la interfaz de administración de nuestro servidor de impresión y desde aquí podremos realizar las configuraciones necesarias para el buen funcionamiento de este.
Ahora para añadir nuestra impresora nos vamos a la opción señalada y de aquí en adelante nos guiara un asistente para la configuración de la impresora.
Este es el asistente que nos guiara, y en los primeros datos que nos pedirá esta Nombre, Ubicación y Descripción cada uno con su respectiva explicación de para que es. Llenamos estos datos y presionamos Siguiente.
Elegimos el tipo de conexión de nuestra impresora, en este caso el sistema detecto en que puerto usb la tengo conectada, elegimos la opción y pulsamos Siguiente.
En este paso debemos elegir el driver con el cual funcionara nuestra impresora, en este caso tuvimos que instalar otra versión del driver proporcionado por foomaticdb el driver para este modelo de impresoras es foo2zjs. En este paso el sistema también selecciona el driver adecuado para nuestra impresora así que doy clic en Añadir Impresora. Ahora nuestra impresora esta lista para ser utilizada por los usuarios de nuestra empresa o departamento según sea nuestro criterio para su uso. Después de este paso seria bueno reiniciar cups /etc/init.d/cups restart para dejar todo listo
AÑADIR IMPRESORA AL SISTEMA CLIENTE WINDOWS Y LINUX Debemos ahora añadir la impresora compartida en el printeserver a nuetsros sistemas cliente como en este caso que contamos con maquinas Windows XP y GNU/LINUX Ubuntu. Para la impresión vamos a utilizar el protocolo IPP, que nos permitirá entre muchas cosas poder imprimir vía Internet y tener datos exactos de quien manda imprimir, cuantas hojas y el nombre del documentos.
En Windows XP Para realizar esta tarea en sistemas windows nos vamos a Panel de Control – Impresoras y Faxes – Archivo – Agregar Impresora, en la ventana que se nos abre dar clic en Siguiente y seleccionar la opción Una impresora de red o una impresora conectada a otro equipo, clic en siguiente y seleccionar la opción Conectarse a una impresora en internet o en su red domestica u organización y se habilitara la opción Dirección URL... pero como obtenemos esa dirección url, para obtener esta url solo es cuestión de entrar a la interfaz web de nuestro PrintServer http://ipcups:631 y dirigirnos al apartado Impresoras y dar clic sobre la impresora que configuramos antes y luego copiar la dirección que aparece en la barra de direcciones del navegador como se ve en la siguiente imagen.
Luego nos vamos al sistema Windows y copias la dirección en el apartado url y clic en siguiente, nos pedirá el driver de la impresora asi que lo tendremos que tener a mano. Luego de esto si no tienes mas impresoras configuradas en el equipo cliente te notificara que si quieres establecer esa impresora como predeterminada eliges la opción deseada y listo podrás imprimir de ahora en adelante.
En GNU/LINUX Ubuntu Para añadir nuestra impresora nos dirigimos a Sistema – Administración – Impresoras – Clic en Nuevo – Impresora y comenzara a buscar la impresoras compartidas en red.
En el apartado Impresora de Red vemos la impresoras compartidas que hay en red, vamos a la opción Internet Printing Protocol (ipp) y en el lado derecho en el campo servidor escribimos la dirección ip de nuestro PrintServer y pulsamos Buscar Cola.
Nos aparecerá la siguiente ventana con la impresora que hemos configurado, la seleccionamos y clic en aceptar.
En este paso si les pica la curiosidad de utilizar la opción Verificar puede que le muestre el mensaje de error que la impresora no es accesible y la verdad no me he puesto a indagar por que es esto pero esto no afecta (por lo menos a mi no) para poder agregar la impresora, luego de esto presionamos Adelante.
Llenamos la Siguiente Información y para Finalizar presionamos Aplicar y listo ya hemos añadido la impresora compartida a nuestro sistema GNU/LINUX. Nos preguntara que si queremos imprimir una pagina de prueba a lo cual contesta lo que quieras xD. Con esto ya podemos dar por concluido la configuración de este PrintServer en Debian.
PROBLEMAS DURANTE LA IMPLEMENTACIÓN Lo que nunca faltan en la implementaciones, pero a partir de estos es que uno aprende. Los problemas que se presentaron durante la implementación de este sistema de impresión los comento a continuación.
Error en la navegación en la Interfaz web de CUPS. Esto puede ocurrir por que la Directiva Browsing este establecida en off. Otra razón seria que no se definió el rango de ip validos para el acceso a la interfaz web.
CONCLUSIÓN Sistemas como estos ayudan a que los recursos en las empresas sean mejor utilizados y ya que las impresoras suelen ser utilizadas no siempre para tareas de la empresa sino que en ellas se imprimen tareas de los hijos, las fotos de las vacaciones, etc. Con esto podemos decidir quien imprime o quien no, que departamentos tienen acceso, ademas de controlar cuantas impresiones se hacen desde una misma maquina.