Bienvenido(a) a Alcance Libre 12/08/2022, 13:33
Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1
© 1999-2014 Joel Barrios Dueñas. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales (incluyendo su publicación, a través de cualquier medio, por entidades con fines de lucro). c) Si altera o transforma esta obra o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector, hace mal uso de éstos.
CUPS (Common UNIX Printing System) es un sistema de impresión para GNU/Linux y otros sistemas operativos basados sobre el estándar POSIX, distribuido bajo los términos de la licencia GNU/GPLv2.
Fue originalmente desarrollado en 1997 por Michael Sweet, dueño de Easy Software Products, utilizando en ese entonces el protocolo LPD (Line Printer Daemon protocol), el cual tenía muchas limitaciones técnicas e incompatibilidades entre las diversas marcas de impresoras, motivo por el cual se cambio por IPP (Internet Printing Protocol). En 2002 CUPS fue incluido por primera vez en Mac OS X, convirtiéndose en el sistema de impresión de facto utilizado hasta la fecha en ese sistema operativo. En febrero de 2007, Apple Inc. contrató como empleado a Michael Sweet, comprando además el código fuente de CUPS.
CUPS se compone de una cola de impresión con un planificador, un sistema de filtros para convertir los datos a formatos que puedan utilizar las impresoras y un sistema que permite enviar estos datos hacia la impresora. Permite además utilizar cualquier equipo como servidor de impresión, a través del protocolo IPP, utilizando el puerto 631/TCP.
Los controladores para CUPS utilizan el formato PPD (PostScript Printer Description), desarrollado por Adobe Systems y que consisten en archivos con extensión *.ppd (o bien *.ppd.gz cuando llevan compresión con el algoritmo GZIP), generalmente creados y mantenidos por los fabricantes de impresoras, los cuales contienen el código PostScript necesario para utilizar las características particulares de un modelo de impresora en particular. CUPS utiliza este formato para todas las impresoras, incluso las no-PostScript, utilizando filtros que redirigen salidas cuando el caso lo requiere.
CUPS incluye además un conjunto de herramientas para el intérprete de mandatos que permiten la gestión de trabajos de impresión.
Si se realiza una instalación estándar de CentOS o Red Hat Enterprise Linux, CUPS viene incluido de modo predeterminado. Si se realiza una instalación mínima o bien si durante la instalación se excluyó el soporte para impresión, ejecute lo siguiente:
yum -y install cups |
Si se quiere que CUPS disponga de una colección completa de controladores para impresoras, ejecute lo siguiente:
yum -y install foomatic-db-ppds gutenprint-cups printer-filters |
Si instala el paquete cups-pdf, dispondrá de una extensión que permitirá crear archivos PDF directamente desde CUPS.
yum -y install cups-pdf |
Instale el paquete hpijs para añadir soporte para impresoras multi-funcionales Hewlett-Packard:
yum -y install hpijs |
Instale los paquetes system-config-printer y cups-pk-helper para poder utilizar una herramienta de configuración y administración fácil de usar y que permita descargar automáticamente los controladores que sean necesarios a través de PackageKit:
yum -y install system-config-printer cups-pk-helper |
Puede simplificar todo lo anterior ejecutando lo siguiente:
yum -y groupinstall print-client print-server |
La instalación estándar de openSUSE™ y SUSE™ Linux Enterprise incluye cups y todo lo necesario para configurar la mayoría de las impresoras compatibles disponibles. De ser necesario, instale con yast los paquetes cups, cups-backends, cups-client, foomatic-filters, gutenprint y yast2-printer , ejecutando lo siguiente:
yast -i cups cups-backends cups-client foomatic-filters \ |
El soporte para impresoras multi-funcionales de Hewlett-Packard requiere instalar el paquete hplip-hpijs. Ejecute lo siguiente:
yast -i hplip-hpijs |
Si utiliza openSUSE™ al igual que con las otras distribuciones GNU/Linux de vanguardia, instale los paquetes system-config-printer y cups-pk-helper para poder utilizar una herramienta de configuración y administración fácil de usar y que permita descargar automáticamente los controladores que sean necesarios a través de PackageKit:
yast -i system-config-printer cups-pk-helper |
CUPS es un servicio que sólo es necesario instalar e iniciar para poder ser utilizado. De modo predeterminado se habilita en todos los niveles de ejecución.
Ejecute lo siguiente para iniciar el servicio por primera vez:
service cups start |
Ejecute lo siguiente para reiniciar el servicio:
service cups restart |
Ejecute lo siguiente para detener el servicio:
service cups stop |
Ejecute lo siguiente para iniciar el servicio por primera vez:
rccups start |
Ejecute lo siguiente para reiniciar el servicio:
rccups restart |
Ejecute lo siguiente para detener el servicio:
rccups stop |
Para servidores de impresión, es necesario abrir en el muro cortafuegos el puerto 631 por TCP y UDP (IPP).
Ejecute lo siguiente si utiliza el muro cortafuegos predeterminado del sistema:
system-config-firewall |
Habilite Cliente o Servidor de impresión en red (IPP) —según sea el caso— y aplique los cambios.
Herramienta system-config-firewall habilitando el puerto 631 por TCP y UDP.
Ejecute lo siguiente:
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 631 -j ACCEPT
iptables -A INPUT -m state --state NEW -m udp -p udp --dport 631 -j ACCEPT
|
Ejecute lo siguiente para guardar los cambios:
service iptables save |
O bien añada lo siguiente al archivo /etc/sysconfig/iptables:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 631 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 631 -j ACCEPT
|
Reinicie el servicio:
service iptables restart |
Para los clientes del servidor de impresión sólo es necesario abrir en el muro cortafuegos el puerto 631 por UDP (IPP).
Ejecute lo siguiente:
iptables -A INPUT -m state --state NEW -m udp -p udp --dport 631 -j ACCEPT
|
Ejecute lo siguiente para guardar los cambios:
service iptables save |
O bien añada lo siguiente al archivo /etc/sysconfig/iptables:
-A INPUT -m state --state NEW -m udp -p udp --dport 631 -j ACCEPT
|
Reinicie el servicio:
service iptables restart |
Las reglas para el archivo /etc/shorewall/rules para un servidor de impresión corresponderían a lo siguiente:
#ACTION SOURCE DEST PROTO DEST SOURCE
# PORT PORT(S)1
ACCEPT all fw tcp 631
ACCEPT all fw udp 631
|
Las reglas para el archivo /etc/shorewall/rules para un cliente de impresión corresponderían a lo siguiente:
#ACTION SOURCE DEST PROTO DEST SOURCE
# PORT PORT(S)1
ACCEPT all fw udp 631
|
Ejecute lo siguiente para aplicar los cambios:
service shorewall restart |
Ejecute yast o yast2 con firewall como argumento:
yast firewall |
Habilite cups en la sección de Servicios Autorizados.
Módulo de cortafuegos de YaST, en modo gráfico, habilitando cups.
Módulo de cortafuegos de YaST, en modo texto, habilitando cups.
O bien abra el puerto 631 por TCP y UDP y aplique los cambios.
Módulo de cortafuegos de YaST, en modo gráfico, habilitando el puerto 631 por TCP y UDP.
Módulo de cortafuegos de YaST, en modo texto, habilitando el puerto 631 por TCP y UDP.
De modo predeterminado cups sólo permite conexiones desde el anfitrión local. Se deben hacer algunas modificaciones en la configuración para compartir las impresoras con el resto de los sistemas de la red de área local.
La herramienta recomendada es system-config-printer, sólo disponible desde modo gráfico. Habilite lo siguiente desde Servidor → Configuración → Opciones del Servidor:
Opciones de Servidor de system-config-printer.
Al terminar haga clic en el botón Aceptar para que surtan efecto los cambios.
La herramienta recomendada es el módulo Impresora de YaST, disponible desde modo gráfico y modo terminal. Habilite lo siguiente desde el menú Equipo → Sistema → Yast → Impresora → Compartir impresoras:
Módulo de Impresoras de YaST en modo gráfico.
Haga clic en el botón Aceptar para que surtan efecto los cambios.
También puede utilizar el módulo printer de YaST en modo texto. Ejecute lo siguiente como root:
yast printer |
Habilite lo siguiente desde Share Printers:
Módulo de Impresoras de YaST en modo terminal.
Aplique los cambios seleccionado Ok, pulse la tecla ↵ (ENTER), espere unos segundos para que apliquen los cambios y salga del módulo seleccionado Ok y pulse la tecla ↵ (ENTER).
Si utiliza CentOS o Red Hat Enterprise™ Linux detenga el servicio ejecutando lo siguiente:
service cups stop |
Si utiliza openSUSE™ o SUSE™ Linux Enterprise detenga el servicio ejecutando lo siguiente:
rccups stop |
Edite el archivo /etc/cups/cupsd.conf:
vim /etc/cups/cupsd.conf |
Localice Listen localhost:631:
# Only listen for connections from the local machine. Listen localhost:631 |
Deshabilite la opción al inicio de la línea y añada debajo Port 631:
# Only listen for connections from the local machine. # Listen localhost:631 # Permitir acceso remoto Port 631 |
Localice lo siguiente:
# Show shared printers on the local network.
Browsing On
BrowseOrder allow,deny
BrowseAllow all
BrowseLocalProtocols CUPS dnssd
|
Añada la opción BrowseRemoteProtocols con el valor CUPS y la opción BrowseAddress con el valor @LOCAL para habilitar la función de compartir impresoras y el acceso a las impresoras remotas:
# Show shared printers on the local network. Browsing On BrowseOrder allow,deny BrowseAllow all BrowseRemoteProtocols CUPS BrowseAddress @LOCAL BrowseLocalProtocols CUPS dnssd |
Localice lo siguiente:
<Location /> Order allow,deny </Location> |
Añada Allow all justo debajo de Order allow,deny:
<Location />
Order allow,deny
Allow all
</Location>
|
Guarde el archivo.
Si utiliza CentOS o Red Hat Enterprise™ Linux inicie de nuevo el servicio ejecutando lo siguiente:
service cups start |
Si utiliza openSUSE™ o SUSE™ Linux Enterprise, inicie de nuevo el servicio ejecutando lo siguiente:
rccups start |
En la mayoría de las distribuciones modernas y siempre y cuando se trate de un dispositivo compatible, que esté soportado por CUPS y que además disponga de un controlador instalado en el sistema, la configuración de las impresoras es automática. Sólo se requiere apagar y encender de nuevo la impresora o desconectar y conectar de nuevo ésta para que CUPS la detecte y pueda configurar ésta de manera automática.
En el caso que sea necesario, CUPS dispone de una interfaz de administración, basada sobre HTTP —disponible inmediatamente después de iniciar el servicio— a través de http://localhost:631/admin. Esta interfaz incluye un asistente de configuración para encontrar y añadir nuevas impresoras o bien administrar las existentes.
En distribuciones como CentOS y Red Hat Enterprise Linux, esta interfaz HTTP sólo requiere utilizar la cuenta y clave de acceso del usuario root del anfitrión local y sólo está disponible conectándose desde el anfitrión local.
En distribuciones como openSUSE y SUSE Linux Enterprise, se requiere ejecutar lppasswd para añadir un usuario virtual (se recomienda se denomine cupsadmin) perteneciente al grupo sys, a fin de poder hacer uso de la interfaz HTTP.
lppasswd -a -g sys cupsadmin |
Siempre que ejecute lppasswd se almacenarán éste y otros usuarios virtuales en el archivo /etc/cups/passwd.md5.
Interfaz de administración de CUPS.
Para obtener una lista de los modelos de impresoras soportados por CUPS y cuyos controladores estén instalados en el sistema dentro del directorio /usr/share/cups/model, ejecute lpinfo con la opción -m:
lpinfo -m |
Ejecute lpadmin del siguiente modo para añadir o modificar una impresora desde el intérprete de mandatos:
lpadmin -p Nombre -E -v URI://ruta/nombre -m ppd-impresora |
Donde:
En lugar de la opción -m, puede utilizarse la opción -P (mayúscula) para definir archivos *.ppd específicos que hayan sido descargados desde OpenPrinting (antes LinuxPrinting.org).
lpadmin -p Nombre -E -v URI://ruta/nombre -P archivo.ppd |
Los URI permitidos por CUPS para dispositivos locales son: hp, hpfax, scsi y usb.
Los URI permitidos por CUPS para impresoras en red son: beh, http, https, ipp, lpd, smb y socket.
La configuración de las impresoras se guardará en el archivo /etc/cups/printers.conf. Si se requiere hacer modificaciones manuales, este archivo puede modificarse con editor de texto sólo cuando el servicio está detenido, pues de otro modo se perderán los cambios realizados con editor de texto.
Los archivos *.ppd que se definan con la interfaz HTTP de CUPS, la herramienta system-config-printer —o bien lpadmin— se copiarán automáticamente dentro del directorio /etc/cups/ppd/.
En el siguiente ejemplo, se añade y/o modifica la configuración para una impresora EPSON EPL-5900, conectada al anfitrión local por USB, utilizando la nomenclatura del archivo *.ppd, mostrada por lpinfo con la opción -m y que corresponde al controlador recomendado para este modelo específico de impresora:
lpadmin -p EPL-5900 -E \ -v usb://EPSON/EPL-5900 \ -m foomatic:Epson-EPL-5900-eplaser.ppd |
En el siguiente ejemplo, se añade y/o modifica la configuración para la misma impresora, conectada al anfitrión local por USB, utilizando el archivo epl5900.ppd, descargado desde OpenPrinting:
lpadmin -p EPL-5900 -E \ -v usb://EPSON/EPL-5900 \ -P ~/Descargas/epl5900.ppd |
En el siguiente ejemplo, se añade y/o modifica la configuración para la misma impresora, pero conectada en el servidor IPP con dirección IP 192.168.70.2:
lpadmin -p EPL-5900 -E \ -v ipp://192.168.70.2/printers/EPL-5900 \ -m foomatic:Epson-EPL-5900-eplaser.ppd |
En el siguiente ejemplo, se añade y/o modifica la configuración para la misma impresora, pero conectada en el servidor SMB (o bien compartida desde un anfitrión Windows) con dirección IP 192.168.70.2, accediendo como usuario invitado:
lpadmin -p EPL-5900 -E \ -v smb://servidor/printers/EPL-5900 \ -m foomatic:Epson-EPL-5900-eplaser.ppd |
En el siguiente ejemplo, se añade y/o modifica la misma configuración para la misma impresora, pero accediendo con el usuario fulano con clave de acceso 123qwe:
lpadmin -p EPL-5900 -E \ -v smb://fulano:123qwe@servidor/printers/EPL-5900 \ -m foomatic:Epson-EPL-5900-eplaser.ppd |
En el caso de haber más de una impresora configurada en CUPS, puede establecerse la impresora predeterminada del sistema ejecutando lpadmin con la opción -d y el nombre de la cola de impresión como argumento, como se muestra en el siguiente ejemplo:
lpadmin -d EPL-5900 |
Para eliminar una impresora de CUPS, ejecute lpadmin con la opción -x, usando como argumento el nombre de la cola de impresión a eliminar.
lpadmin -x EPL-5900 |
Las opciones definidas con lpoptions se guardan en el archivo /etc/cups/lpoptions. Cabe señalar que lpoptions también puede ser utilizado por usuarios regulares, pero las opciones definidas por éstos se guardarán en el archivo ~/.cups/lpoptions (CentOS o Red Hat™ Enterprise Linux) o ~/.lpoptions (openSUSE™ y SUSE™ Linux Enterprise) del usuario utilizado.
Las opciones disponibles para cada modelo de impresora pueden consultarse y verificarse ejecutando lpoptions con la opción -l.
lpoptions -p EPL-5900 -l |
En el caso de la impresora EPSON EPL-5900, lo anterior mostrará una salida similar a la siguiente:
|
La salida se interpreta de la siguiente forma, donde los valores predeterminados se muestran junto con un asterisco:
NombreOpción/Descripción de la opción: valores *predeterminado |
El valor predeterminado para el tamaño del papel, en la mayoría de los controladores, es A4. En el siguiente ejemplo se establecerá que de modo predeterminado se utilicé tamaño carta para el tamaño del papel, en lugar del valor predeterminado del archivo *.ppd correspondiente, ejecutando lpoptions del siguiente modo:
lpoptions -p EPL-5900 -o PageSize=Letter |
En el siguiente ejemplo se establecerá que, de modo predeterminado, esta impresora utilice tamaño carta para el tamaño del papel, pero modificando del valor predeterminado del archivo *.ppd correspondiente, el cual está dentro del directorio /etc/cups/ppd/, ejecutando lpadmin del siguiente modo:
lpadmin -p EPL-5900 -o PageSize=Letter |
En el siguiente ejemplo se establecerá que de modo predeterminado se utilice tamaño oficio para el tamaño del papel, en lugar del valor predeterminado del archivo *.ppd correspondiente, ejecutando lpoptions del siguiente modo:
lpoptions -p EPL-5900 -o PageSize=Legal |
En el siguiente ejemplo se establecerá 300x300dpi como valor predeterminado para la resolución de las impresiones:
lpoptions -p EPL-5900 -o Resolution=300x300dpi |
El estilo System V, que es el método preferido, utiliza lp con la opción -d y el nombre de la cola de impresión como argumento.
lp -d NombreCola archivo.ps |
Para hacer la impresión de archivos locales en una impresora remota ejecutando lp, se ejecuta lo anterior con la opción -h y el nombre o dirección IP del servidor como argumento.
lp -d NombreCola -h 192.168.70.2 archivo.ps |
Además lp permite especificar opciones de impresión cuando el caso lo requiera. En el siguiente ejemplo se realiza la impresión de un archivo en una impresora local, definiendo tamaño oficio para el tamaño del papel:
lp -d NombreCola -o PageSize=Legal archivo.ps |
El estilo Berkely, que es el método antiguo, utiliza lpr con la opción -P (mayúscula) y el nombre de la cola de impresión como argumento:
lpr -P NombreCola archivo.ps |
Para hacer la impresión de archivos locales en una impresora remota ejecutando lpr, se ejecuta lo anterior con la opción -H (mayúscula) y el nombre o dirección IP del servidor como argumento:
lpr -P NombreCola -H 192.168.70.2 archivo.ps |
También lpr permite especificar opciones de impresión cuando el caso lo requiera. En el siguiente ejemplo se realiza la impresión de un archivo en una impresora local, definiendo tamaño oficio para el tamaño del papel:
lpr -P NombreCola -o PageSize=Legal archivo.ps |
Para mostrar el estado de todas las colas de impresión del sistema, utilizando el estilo System V, ejecute lpstat con la opción -p:
lpstat -p |
Para mostrar el estado de una impresora en particular, ejecute lpstat con la opción -p con el nombre de la cola de impresión como argumento:
lpstat -p NombreCola |
Para mostrar el estado de una impresora en particular en un servidor remoto (por ejemplo 192.168.70.2), ejecute lpstat con la opción -p con el nombre de la cola de impresión como argumento y la opción -h con el nombre del servidor o la dirección IP correspondiente como argumento:
lpstat -p NombreCola -h 192.168.70.2 |
Para mostrar el estado de todos los trabajos de impresión pendientes en todas las colas de impresión del sistema, ejecute lpstat con la opción -o:
lpstat -o |
Para mostrar el estado de todos los trabajos de impresión pendientes en una impresora en particular, ejecute lpstat con la opción -o con el nombre de la cola de impresión como argumento:
lpstat -o NombreCola |
Para mostrar el estado de una impresora en particular, así como también el estado de todos los trabajos de impresión pendientes en ésta, ejecute lpstat con la opción -p con el nombre de la cola de impresión como argumento y la opción -o con el nombre de la cola de impresión como argumento.
lpstat -p NombreCola -o NombreCola |
Si se desea información más detallada, ejecute lpstat con la opción -t:
lpstat -t |
Si se desea el máximo de información disponible, ejecute lpstat con la opción -t y la opción -l:
lpstat -t -l |
Para mostrar el estado de todas las colas de impresión del sistema y los trabajos pendientes, utilizando el estilo Berkeley, ejecute lpq:
lpq |
Para mostrar el estado de una impresora en particular, ejecute lpq con la opción -P (mayúscula) con el nombre de la cola de impresión como argumento:
lpq -PNombreCola |
Para mostrar el estado de todos los trabajos de impresión pendientes en todas las colas de impresión del sistema, ejecute lpq con la opción -a:
lpq -a |
El estilo System V utiliza cancel con el nombre de la cola de impresión y el número de trabajo como argumentos.
cancel NombreCola-número |
En el siguiente ejemplo se cancela el trabajo de impresión 5 en la cola de impresión EPL-5900:
cancel EPL-5900-5 |
Para eliminar un trabajo de impresión en un servidor remoto, a lo anterior se le añade la opción -h con el nombre o dirección IP que corresponda como argumento.
cancel -h servidor NombreCola-número |
En el siguiente ejemplo se cancela el trabajo de impresión 5 en la cola de impresión EPL-5900 en el servidor 192.168.70.2:
cancel -h 192.168.70.2 EPL-5900-5 |
El estilo Berkeley utiliza lprm, la opción -P (mayúscula), seguida inmediatamente del nombre de la cola de impresión como argumento y el número del trabajo de impresión que se quiere cancelar:
lprm -PNombreCola Número |
En el siguiente ejemplo se cancela el trabajo de impresión 5 en la cola de impresión EPL-5900:
lprm -PEPL-5900 5 |
Para eliminar un trabajo de impresión en un servidor remoto, a lo anterior se le añade la opción -h con el nombre o dirección IP que corresponda como argumento.
lprm -h servidor -PNombreCola Número |
En el siguiente ejemplo se cancela el trabajo de impresión 5 en la cola de impresión EPL-5900 en el servidor 192.168.70.2:
lprm -h 192.168.70.2 -PEPL-5900 5 |
Última Edición: 29/05/2014, 15:32| Hits: 134,071