ant

IMPRESIÓN EN LINUX
4.13

sig

4.13 Introducción

La mayoría de los sistemas se encuadran en dos diferenciados: ATT y BSD (Berkeley Software Distribution). Varios sistemas soportan ambos modelos o alguna variación de estos.

4.13.1 El subsistema de Impresión

El subsistema de impresión, ya sea ATT o BSD está compuesto de:

. Ficheros de configuración. Generalmente ASCII
. Ficheros de trazas
. Programas de interfaz con el usuario
. Demonios. Programas servidores
. Colas. Generalmente directorios con mecanismos de acceso compartido
. Programas de administración (altas, bajas, etc.)

FICHEROS DE CONFIGURACIÓN
Desafortunadamente no existe un único fichero de configuración del sistema de impresión, por lo que nos veremos obligados a modificar varios ficheros. Al igual que otros servicios, el subsistema de impresión está obligado a cumplir unas mínimas medidas de seguridad, además de permitir diversas configuraciones del mismo (impresoras en red compartidas, perfiles de usuario, etc.) /etc/printcap

FICHEROS DE TRAZAS (LOGS)
En estos ficheros queda registrado el uso que los usuarios hacen del susbsistema de impresión, así como los distintos fallos del servicio. /var/log/lpd

PROGRAMAS DE INTERFAZ CON EL USUARIO
Estos programas van a permitir a usuario del sistema enviar un trabajo al subsistema de impresión. Todos estos programas deberán permitir que el usuario pueda elegir la impresora a la que enviar el trabajo, conocer el estado de un trabajo, borrar un trabajo, etc. lpr, lpq, lprm

DEMONIOS
Los demonios son los encargados de supervisar el envio de un trabajo a la impresora, además de garantizar el acceso compartido a las impresoras. /usr/sbin/lpd

COLAS (SPOOL)
Generalmente son directorios propios del subsistema de impresión y sirven para almacenar los trabajos encargados por los usuarios. Suele existir una cola por cada impresora conectada al sistema. /var/spool/lpd

PROGRAMAS DE ADMINISTRACIÓN
La mayoría de los sistemas UNIX disponen de programas que permiten una gestión integral del subsistema de impresión. Si no existiese un programa de gestión, sería muy recomendable que el administrador implementase uno. lpc

4.13.2 Gestión de la Impresión en BSD

Este sistema de impresión es el más extendido y está soportado por la mayoría de los sistemas UNIX.(además soporta impresión remota -redes-)

El sistema BSD permite la utilización de impresoras remotas, es decir, permite el envío de un trabajo desde un ordenador a una impresora conectada en otro ordenador. Cuando se utiliza este esquema de funcionamiento, el demonio de impresión es el encargado de supervisar el envío y la recepción del trabajo.

Como es lógico, para poder realizar impresiones remotas es necesario configurar los sistemas para que admitan este tipo de funcionalidad. Además, se deberá establecer una relación de confianza entre ambos sistemas.

En los sistemas de impresión BSD el demonio es el porgrama /usr/sbin/lpd que se suele arrancar desde algún fichero de arranque situado en el directorio /etc/rc.d/rc?.d (donde '?' indica un nivel de ejecución).

lpd saca de la cola de impresión los trabajos que el usuario ha ido solicitando mediante el comando lpr (interfaz de usuario). lpr no sólo encola el fichero que va a ser impreso sino que además incluye información de cómo tiene que llevarse a cabo la impresión (impresora destino, uso de filtros, tipo de formato, etc.). Toda esta información se suele suministrar al comando lpr a través de distintis parámetros en la línea de comandos. lpr suele crear dos ficheros:

. cf<JOB_ID> Fichero de control Contiene el login del usuario, impresora remota, etc.

. df<JOB_ID> Fichero de datos. Contiene la información a imprimir.

4.13.3 Comandos del sistema de Impresión BSD


lpr Añade un trabajo en la cola de la impresora especificada. Cada trabajo dispone de un JOB ID, que es único y permitirá al usuario conocer el estado del trabajo.
OPCIONES : -p IMPRESORA_HP

lprm Permite borrar un trabajo. Es necesario proporcionar el JOB ID de los trabajos a cancelar.
OPCIONES : -p IMPRESORA_HP

lpq Estado de la impresión. Permite conocer si un trabajo está encolado o existe algún error en el subsistema de impresión.

lpc Es un comando de administrador. Permite parar y arrancar el demonio (lpd), hacer que una impresora no admita trabajos, obtener una descripción de algún error, etc. OPCIONES :

  status Comprobar estado
  clean Borrado de ficheros
  start/stop Arrancar / Parar una impresora
  up/down Paradas temporales
  enable/disable Poner el spool en on/off
  abort Parar inmediatamente el demonio
  quit Salir del programa

4.13.4 Ficheros de configuración

El principal fichero d configuración es /etc/printcap en el que se configuran todas las impresoras disponibles y sus diferentes características (ficheros de trazas, fichero de dispositivo, tamaño máximo de los ficheros a imprimir, etc.). Este fichero es utilizado tanto por el porgrama de usuario (envio de trabajos) como por el demonio de impresión.

A continuación se incluye una configuración típica de /etc/printcap:
lp | lp0 | Impresora Laser:\
:sd=/var/spool/lpd/lp:\
:mx#0:\
:sh:\
:rm=printer.decker.ix.com:\
:rp:=\
:if=/var/spool/lpd/lp/filter:


lp1 | Impresora matricial:\
:sd=/var/spool/lpd/lp1:\
:af=/var/log/lp1.acct:\
:br=9600:\
:mx#0:\
:lf=/var/log/lp1.log:\
:lp=/dev/tty01:
En el fichero se describen dos impresoras (lp0 y lp1). Para cada una de ellas se enumeran las características de funcionamiento. En este ejemplo solo se enumeran una serie de ellas, pero existen más de 30 (cuando una no aparece toma el valor por defecto)

Después del nombre de la impresora (puede tener varios separados por '|') se colocan los atributos, que empiezan y terminan por ':'. El nombre de un atributo es siempre una cadena de caracteres de longitud 2.

Los atributos más importantes son:

.sd (Spool Directory) : Directorio de spool (cola) donde se almacenan los trabajos a imprimir (ficheros cf* y df*)

.mx (MaXimum File Size) : Tamaño máximo del trabajo a imprimir (fichero). Si aparece un 0, no existe limitación de tamaño de los trabajos a imprimir.

.sh (Suppress Burst Header Page) : No imprimir una hoja de portada con el nombre del usuario que encargó el trabajo, fecha, etc.

.rm (Remote Machine name) : Este atributo se usa cuando la impresora está físicamente conectada a otro ordenador o es una impresora de red que soporta el protocolo LPD de impresión.

.rp (Remote Printer) : Nombre de la impresora remota. Por defecto, suele tomar el valor 'lp'. En todos los sistemas suele existir una impresora con nombre o alias 'lp'.

.if : Nombre del programa que realiza la contabilidad (accounting)

.af (Accounting File Name) : Nombre del fichero en el que se almacena información de tipo adminsitrativo. Suele utilizarse para controlar o facturar el uso de la impresora a los usuarios. El programa descrito en el atributo if es el encargado de almacenar esta información.

.lf (Log File Name) : En él se registran los distintos errores que aparecen en el funcionamiento del sistema de impresión.

.lp : Nombre del dispositivo al que está conectada la impresora.

.br (Baud Rate) : Velocidad de transmisión en la conexión ordenador/impresora.

.rs (ReStricted Remote Users) : Solo se permite enviar trabajos de impresión a usuarios con cuenta en el sistema. Por defecto, permite a cualquier usuario, ya sea local o remoto el envio de trabajos.

4.13.5 Colas de impresión

Las colas de impresión o spools son directorios, existiendo uno por cada impresora definida en el sistema.

En un instante dado, el subsistema de impresión solo puede estar procesando un trabajo por cada impresora. Como los usuarios pueden solicitar varios trabajos a la vez, es necesario disponer de espacio en disco para almacenarlos.

Los directorios de spool suelen ser propiedad del usuario daemon y grupo daemon (usuario y grupo especiales del sistema propietarios del subsistema de impresión).

Para crear un spool podríamos utilizar el siguiente fragmento de código shell:
#cd /var/spool/lpd
#mkdir IMPRESORA_HP
#chown daemon IMPRESORA_HP
#chgrp daemon IMPRESORA_HP
#chmod 755 IMPRESORA_HP
En algunas ocasiones aparece un fichero de nombre lock que evita que se añadan ficheros de impresión en la cola. (lo suele activar la opción stop del comando lpc).

4.13.6 Impresión Remota

Existen dos ficheros en los que se pueden especificar permisos para que usuarios de otros ordenadores de la red puedan imprimir en las impresoras definidas en el sistema:

/etc/hosts.lpd : Este fichero es específico del subsistema de impresión. En él se enumeran los nombres de los ordenadores desde los que se puede encolar trabajos de impresión.

Un ejemplo podría ser:
paraiso.ix.com
sol.ix.com
luna.ix.com
love.ix.com
Los ordenadores cuyo nombre aparece en el fichero están autorizados a enviar trabajos a cualquier impresora que lo permita.

/etc/hosts.equiv : Este fichero es de propósito general (no específico del subsistema de impresión) y establece permisos entre ordenadores para la ejecución de comandos remotos (rsh, rcp, rlogin, etc.).

El formato de las entradas en este fichero es:

[ + ] [ - ] [nombre_ordenador] [nombre_usuario]

El carácter '-' indica una prohibición. Mediante el campo opcional nombre_usuario podemos restringir o permitir el uso de los comandos remotos a un usuario en concreto.


Para que un usuario pueda imprimir en una impresora remota, el nombre de su máquina deberá aparecer en alguno de los ficheros anteriormente descritos. Adicionalmente se comprueba el campo rs (ReStricted Remote Users) del fichero /etc/printcap para la impresora en la que se desea imprimir.

4.13.7 Incorporación de una nueva Impresora

La receta básica es

"Utilizar algún programa del sistema para incorporar nuevas impresoras"

En caso de no disponer de un programa de gestión de impresoras se pueden seguir los pasos:

1. Conectar la impresora a un puerto de comunicaciones del sistema (serie o paralelo)

2. Si se conecta la impresora a un puerto serie, comprobar que no hay arrancado un proceso getty por el puerto (fichero /etc/inittab)

3. Asegurese que el demonio lpd está arrancado. Si no está arrancado, añadir un fichero de arranque(etc/rc.d) de acuerdo al nivel de ejecución del sistema. (vea la sección 4.2)

4. Añadir una entrada en el fichero /etc/printcap (campos básicos sd, lp, br, mx)
5. Crear el directorio spool

6. Crear los distintos ficheros de traza y contabilidad:
#touch /var/log/IMPRESORA_HP.log
#touch /var/log/IMPRESORA_HP.acct
7. Establecer permisos en los ficheros /etc/hosts.lpd y /etc/hosts.equiv si la impresora va a permitir impresiones remotas desde otros sistemas

8. Comprobar eñ funcionamiento de la impresora mediante el comando lpc. Posiblemente sea necesario arrancarla (lpc up IMPRESORA_HP)

9. Realizar una prueba de funcionamiento: lpr -p IMPRESORA_HP fichero.txt

4.13.8 Problemas con la impresora

Si se ha instalado una nueva impresora y no funciona, pueden realizarse las siguienets comprobaciones:

1. ¿Está bien el cableado?
Si la impresora está conectada al ordenador mediante una conexión serie (RS232), es muy posible que el cable no tenga todas las señales conectadas. Consultar el manual de la impresora para ver que tipo de cable necesita.

2. ¿Existe algún proceso getty por el puerto o línea (/dev/tty??) de la impresora?
Si la línea de conexión es serie, es muy posible que anteriormente se hubiera usado como línea de conexión al sistema. (Ejemplo ps -ef | grep tty05)

3. ¿Está bien la configuración de la impresora en el fichero /etc/printcap?
En algunas ocasiones existe algún error de sintaxis (falta un carácter ':' o un retorno de carro). También suele suceder que se ha escrito mal el nombre de un directorio.

4. ¿Está arrancado el demonio lpd (Ejemplo : ps -ef | grep lpd)?

5. ¿Está funcionando correctamente el susbsistema de impresión (lpc status all)?

6. ¿Se encolan los trabajos de impresión (lpd) (Ejemplo: ls -l /var/spool/IMPERSORA_HP)?

7. ¿Has marcado un fichero demasiado grande (Comprobar campo mx de /etc/printcap)?

8. ¿Están bien los permisos de impresión remota, etc/hosts.lpd y /etc/hosts.equiv)?