15.8. Imprimiendo en una Cola de Impresión NetWare

El paquete ncpfs contiene una pequeña utilidad llamada nprint que envia trabajos de impresión a través de una conexión NCP a una cola de impresión NetWare. Esta orden crea la conexión si no existe ya, y utiliza el fichero ~/.nwclient que describimos anteriormente para esconder el nombre de usuario y la clave de los ojos fisgones. Los argumentos de línea de orden utilizados para manejar el proceso de ingreso son los mismos que los utilizados en la orden ncpmount, así que no los veremos de nuevo aquí. Cubriremos las opciones de línea de orden más importantes en nuestros ejemplos; remítase a la página de manual nprint(1) para más detalles.

La única opción requerida en la orden nprint es el nombre del fichero a imprimir. Si se especifica un – en el nombre de fichero o si no se especifica nada, nprint aceptará el trabajo de impresión desde stdin. Las opciones más importantes de nprint especifican el servidor de ficheros y la cola de impresión a los que desea enviar el trabajo. La Tabla 15-4 lista las opciones más importantes.

Tabla 15-4. Opciones de Línea de Orden de nprint

OpciónDescripción
-S nombre_servidor

El nombre del servidor de ficheros NetWare que mantiene la cola de impresión en la que se desea imprimir. Normalmente, es conveniente que el servidor tenga una entrada en el fichero ~/.nwclient. Esta opción es obligatoria.

-q nombre_cola

La cola de impresión a la que enviar el trabajo de impresión. Esta opción es obligatoria.

-d descripción_trabajo

Texto que aparecerá en la consola de impresión al mostrar la lista de los trabajos en cola.

-l líneas

El número de líneas por página imprimida. Por defecto es 66.

-r columnas

El número de columnas por página imprimida. Por defecto es 80.

-c copias

El número de copias del trabajo que se imprimirán. Por defecto es 1.

Un ejemplo de nprint sería:
    $ nprint -S REDS01 -q PSLASER -c 2 /home/matt/ethylene.ps
Este orden imprimiría dos copias del fichero /home/matt/ethylene.ps a la impresora llamada PLASER en el servidor de ficheros REDS01, utilizando el nombre de usuario y la clave obtenidas del fichero ~/.nwclient.

15.8.1. Utilizando nprint con el Demonio de Impresión en Línea

Recordará que ya hemos mencionado que la opción –c de la orden ncpmount es útil para imprimir. Al final explicaremos porqué y cómo.

GNU/Linux utiliza el software de impresión en línea estilo BSD. El demonio de impresión en línea (lpd ) es un demonio que mira en un directorio de cola (spool) local si hay trabajos en cola que tienen que imprimirse. lpd lee el nombre de la impresora y otros parámetros a partir del formato especial del fichero de la cola, y escribe los datos en la impresora, pasando opcionalmente los datos a través de un filtro para transformarlos o manipularlos de alguna manera.

El demonio lpd utiliza una simple base de datos llamada /etc/printcap para almacenar la configuración de la impresora, incluyendo qué filtros hay que ejecutar. Normalmente, lpd se ejecuta con los permisos de un usuario de sistema especial llamado lp.

Se puede configurar nprint como un filtro para lpd, lo que permite a los usuarios de su máquina GNU/Linux imprimir directamente en impresoras remotas alojadas en un servidor de ficheros NetWare. Para esto, el usuario lp debe poder escribir peticiones NCP en la conexión NCP al servidor.

Una manera fácil de conseguir esto sin que el usuario lp tenga que establecer su propia conexión e ingreso en el sistema es especificar lp como el dueño de una conexión establecida por otro usuario. Se lista un ejemplo completo de cómo configurar el sistema de impresión de GNU/Linux para que atienda trabajos de impresión de clientes a través de NetWare en tres pasos:

  1. Escribir un guión de encapsulamiento (wrapper).

    El fichero /etc/printcap no permite que se le pasen opciones a los filtros. Por tanto, necesita escribir un pequeño guión que invoque la instrucción que desea junto con sus opciones. El guión de encapsulamiento puede ser tan simple como:
        #!/bin/sh
        # p2pslaser - sencillo script para redirigir stdin a la
        # cola PSLASER en el servidor REDS01
        #
        /usr/bin/nprint -S REDS01 -U stuart -q PSLASER
        #

    Guardar el guión en el fichero /usr/local/bin/p2pslaser.

  2. Escribir la entrada en /etc/printcap.

    Necesitaremos configurar el guión p2pslaser que hemos creado como filtro de salida en /etc/printcap. Sería algo así:
        pslaser|Postguión Laser Printer hosted by NetWare server:\                     
        :lp=/dev/null:\                                                         
        :sd=/var/spool/lpd/pslaser:\                                            
        :if=/usr/local/bin/p2pslaser:\
        :af=/var/log/lp-acct:\
        :lf=/var/log/lp-errs:\
        :pl#66:\                                                                
        :pw#80:\                                                                
        :pc#150:\                                                               
        :mx#0:\                                                                 
        :sh:                                                                    

  3. Añadir la opción –c a ncpmount.

        ncpmount -S REDS01 .... -c lp ....

    Nuestro usuario local stuart debe especificar al usuario lp como dueño de la conexión cuando monte el servidor NetWare remoto.

Ahora cualquier usuario de Linux puede elegir pslaser como el nombre de impresora cuando invoque a lp. El trabajo de impresión será enviado al servidor NetWare especificado y entrará en la cola de impresión.

15.8.2. Manejando Colas de Impresión

la orden pqlist lista todas las colas de impresión disponibles en el servidor especificado. Si no especifica un servidor de ficheros en la línea de orden con la opción -S, o un nombre de acceso y clave, éstos se tomarán de la entrada por defecto de su fichero ~/.nwclient:

    # pqlist -S vbrew_f1 -U guest -n
    Server: ALES_F1
    Print queue name                                    Queue ID  
    ------------------------------------------------------------
    TEST                                                AA02009E
    Q2                                                  EF0200D9
    NPI223761_P1                                        DA03007C
    Q1                                                  F1060004
    I-DATA                                              0D0A003B
    NPI223761_P3                                        D80A0031

Nuestro ejemplo muestra una lista de las colas de impresión disponibles para el usuario guest en el servidor de ficheros ALES_F1. [1]

Para ver los trabajos de una cola de impresión, utilice la instrucción pqstat. Toma como argumento el nombre de la cola de impresión, y lista todos los trabajos de esa cola. Opcionalmente, puede proporcionarle otro argumento indicando cuántos trabajos de la lista quiere mostrar. La siguiente salida de ejemplo ha sido comprimida un poco para que quepa en el ancho de la página de este libro:
    $ pqstat -S ALES_F1 NPI223761_P1
    
    Server: ALES_F1     Queue: NPI223761_P1          Queue ID: 6A0E000C
       Seq  Name      Description                    Status   Form  Job ID  
    ------------------------------------------------------------------------
         1  TOTRAN    LyX document - propuesta.lyx    Active      0  02660001

Podemos ver que sólo hay un trabajo de impresión en la cola, que pertenece al usuario TOTRAN. El resto de las opciones incluyen una descripción del trabajo, su estado y su identificador de trabajo.

la orden pqrm se utiliza para eliminar trabajos de impresión de una cola de impresión especificada. Para eliminar el trabajo de la cola de la que acabamos de obtener el estado, sería:

    $ pqrm -S ALES_F1 NPI223761_P1 02660001

La orden es bastante simple, pero es pesado de utilizar cuando se tiene prisa. Sería un valioso proyecto escribir un guión básico para simplificar esta operación.

Notas

[1]

Parece que los administradores de sistemas han estado probando algunos de los artículos de la Cervecera Virtual antes de elegir alguno de esos nombres de cola de impresión. ¡Esperemos que los nombres que usted elija tengan más sentido!