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!