Administració de servidors d'impressió

L’administració dels serveis d’impressió ha estat sempre una tasca necessària en els processos associats als sistemes d’informació. El resultat dels càlculs i la manipulació de les dades per obtenir informació útil havien de traslladar-se, en algun moment, a un suport definitiu i directament interpretable pels usuaris: el suport de paper. En aquest sentit, l’evolució constant de les necessitats dels usuaris i de la tecnologia ens ha portat a sistemes que han de garantir la gestió de múltiples treballs d’impressió en un entorn multiusuari, la comunicació i transmissió en xarxa amb els protocols adequats, l’administració de cues d’impressió i el suport a una tecnologia d’impressió gràfica dels perifèrics cada vegada més sofisticada.

Sistemes d'impressió

En l’actualitat els sistemes d’impressió poden ser complexos de gestionar i administrar: treballs d’alta qualitat gràfica, impressores compartides, perifèrics distribuïts a la xarxa, impressores de molts tipus i tecnologies, diferents opcions de ports de connexió, cues d’impressió, prioritats, seguretat, sistemes operatius heterogenis, etc. Tota aquesta gestió fa necessària la implementació de sistemes d’impressió d’una certa complexitat que permetin una adequada administració d’aquest servei bàsic.

Una mica d'història

A l’inici de l’era dels ordinadors personals, la tasca d’impressió era molt simple. Les impressores eren gairebé totes matricials, es comunicaven amb l’ordinador majoritàriament pel port paral·lel i només acceptaven caràcters de text. Així, imprimir un arxiu de text en un sistema Unix es podia fer senzillament redreçant l’arxiu al dispositiu que representava el port d’impressió, generalment lp0:

  1. $ cat mitext.txt > /dev/lp0

Quan els ordenadors IBM PC van aparèixer el 1981, van fer servir el mateix model d’Unix. Les aplicacions incloïen informació sobre els codis de control de les impressores més populars i conegudes i l’usuari indicava a cada aplicació quins codis d’escapada havia de fer servir per a una impressora particular.

Codi d'escapada d'impressora

Els codis d’escapada són determinades seqüències de caràcters que s’insereixen en els textos a imprimir i són interpretats per la impressora com a ordres per activar o desactivar alguna funció, per exemple la lletra negreta o itàlica, fer un salt de línia o de pàgina, etc.

Amb l’aparició dels sistemes operatius gràfics, primer Apple Mac OS i després Microsoft Windows, es va canviar la filosofia d’impressió, ja que es va abstraure la interfície d’impressió de les diferents aplicacions. Així, els programes d’aplicació només han d’indicar al sistema d’impressió del sistema operatiu on i què imprimir, i és aquest sistema d’impressió el que trasllada la petició correctament formatada a la sortida de la impressora seleccionada.

Aquests sistemes d’impressió havien d’acceptar gràfics, fonts tipogràfiques i imatges, i van aparèixer tecnologies d’impressió com les làser o les d’injecció, juntament amb llenguatges de descripció de pàgines com PostScript, per donar resposta a aquestes noves necessitats gràfiques. També la interconnectivitat i les xarxes van aportar-hi complexitat i la necessitat de protocols per comunicar-se amb impressores i servidors d’impressió remots gestionant prioritats, usuaris i cues de treballs.

En l’actualitat, els sistemes operatius moderns, i entre ells les famílies Unix/Linux, han de resoldre i incorporar les eines d’administració per gestionar les necessitats d’impressió en aquests entorns de treball complexos.

Dades, interfícies i protocols

El procés d’impressió consisteix bàsicament a transmetre una sèrie de dades textuals, gràfiques, imatges, etc. des de l’ordinador que les ha processat fins a un determinat perifèric d’impressió. Per establir una comunicació amb qualsevol perifèric cal un canal de comunicació física, es a dir una interfície electrònica que permeti transmetre els senyals que porten la informació. Aquests canals de comunicació poden ser ports i bussos de comunicació local o bé una infraestructura de xarxa.

En el cas d’intercomunicar ordinadors i perifèrics mitjançant una xarxa compartida també cal tenir present la necessitat d’implementar uns protocols de comunicació adequats per assolir les funcionalitats necessàries en qualsevol sistema d’impressió.

Dades

En els primers sistemes d’impressió, els perifèrics emprats eren impressores de caràcters (line printer), que rebien informació alfanumèrica caràcter a caràcter. En aquest entorn, les dades acostumaven a estar codificades en ASCII (American standard code for information interchange) de 7 bits, que permetia imprimir els números, els caràcters anglesos i alguns signes de puntuació, a més d’un grapat de caràcters de control que gairebé totes les impressores reconeixien, com ara el salt de línia o el salt de pàgina.

Amb la implementació del codi ASCII de 8 bits es van poder imprimir nous caràcters particulars d’altres idiomes (vocals accentuades, lletra ñ, etc.), així con determinats caràcters semigràfics molt senzills.

Per fer el pas següent i poder imprimir dades més complexes com gràfics, imatges, diferents tipografies de lletra, etc. es van crear uns llenguatges de descripció de pàgina. Aquest llenguatges permeten definir el format de la pàgina, la col·locació del text, els mapes de bits i els objectes vectorials per obtenir una qualitat d’impressió òptima.

En aquest cas, l’ordinador envia a la impressora un arxiu amb la descripció de les pàgines a imprimir, aquesta interpreta les instruccions i construeix una representació de la pàgina en forma de mapa de bits que la tecnologia d’impressió (làser, injecció, etc.) s’encarrega de passar al paper.

Els llenguatges de descripció de pàgina més emprats són:

  • PostScript: Estàndard de facto desenvolupat per Adobe. La majoria d’impressores modernes entenen PostScript i, en tot cas, es poden fer servir filtres i traductors per a la majoria d’impressores.
  • PCL (printer command language): És un llenguatge de descripció de pàgines desenvolupat per Helwett-Packard com a protocol de comunicació per a les seves impressores làser i d’injecció (vegeu la figura). És una mica més senzill i ràpid, i necessita menys memòria, però no és tan potent com Postcript que, en teoria, pot arribar a generar impressions de més qualitat que PCL.

Figura Impressora làser Hewlett-Packard amb llenguatge PCL

Interfícies de comunicació

Per transferir dades a qualsevol perifèric en general i a les impressores en particular ens cal una interfície física de comunicació que permeti la transmissió de bits d’informació per mitjans electrònics, òptics o de radiofreqüència.

Aquestes interfícies poden transmetre grups de bits simultàniament, paraula a paraula en el cas de les interfícies paral·leles, o bé bit a bit en el cas de les interfícies de sèrie.

Aquesta connexió física s’anomena genèricament port, encara que, en rigor, els ports són interfícies que connecten un sistema informàtic directament amb un determinat perifèric, mentre que els anomenats bussos són interfícies de comunicació que poden ser compartides per més d’un perifèric alhora.

Els tipus més habituals d’interfícies de comunicació per a la connexió d’impressores en l’àmbit local són:

  • Port paral·lel: també anomenat port Centronics. Implementat en el disseny del primer IBM PC, és un port de comunicació paral·lel bidireccional de 8 bits de dades més un conjunt de línies de control. Aquest port va ser la interfície d’impressió local per excel·lència fins a l’aparició del port USB.
  • Port de sèrie RS232: interfície de sèrie habitualment implementada amb connectors DB9M (nou pins mascle), dissenyada per a distàncies de fins a 15 metres i velocitats baixes, d’uns 20 Kbps (kilobits per segon). Encara avui dia es fa servir en alguns tipus d’impressores especials de tiquets i de codis de barres.
  • Bus USB (universal serial bus): aquesta interfície de tipus sèrie i topologia de bus permet la connexió simultània de diferents perifèrics que comparteixen el canal de comunicació. Aquest tipus d’interfície permet la connexió de perifèrics en calent (hot swap) i el seu reconeixement i configuració automàtica (plug and play). En la seva versió 2.0 arriba a una velocitat de transmissió de 480 Mbps mentre que en la versió 3.0 pot aconseguir una velocitat de fins a 3.200 Mbps. En l’actualitat és la interfície més emprada en la connexió de perifèrics de tot tipus (ratolins, teclats, discos externs, etc.), incloses les impressores.
  • Bus FireWire: aquesta interfície definida en la norma IEEE1394 és coneguda com a FireWire en l’entorn d’Apple i com a i.link en l’entorn de Sony. Té característiques semblants a l’USB en tant que és una interfície de sèrie de topologia bus, i les seves diferents versions permeten velocitats de transmissió que van dels 400 Mbps als 3.200 Mbps. La diferència principal és que el bus USB requereix sempre un ordinador host, mentre que FireWire pot funcionar de punt a punt (peer-to-peer), habilitant el diàleg de dos perifèrics entre si, sense la intervenció d’un ordinador. Algunes impressores disposen d’aquesta interfície, encara que el seu ús més habitual el trobem en perifèrics multimèdia, com ara càmeres de vídeo digital.

Plug and play

El sistema plug and play (endollar i funcionar) descriu aquells dispositius o interfícies que permeten reconèixer automàticament el maquinari d’un sistema i configurar-ho automàticament, i resolen els possibles conflictes en l’ús dels recursos. Alguns sistemes plug and play que es fan servir actualment són les interfícies USB, FireWire o les ranures d’expansió PCI i PCI Express.

Podem veure els connectors d’aquestes interfícies a la figura.

Figura Principals interfícies de connexió per a impressores

Fora de l’àmbit de la connexió local i directa, la generalització de les infraestructures en xarxa Ethernet ha tingut també com a conseqüència la possibilitat de connectar les impressores directament a la xarxa com un node més. En aquest cas, a més de la connectivitat física Ethernet, usualment amb l’ús de connectors RJ45, s’ha de proveir el perifèric de la corresponent adreça IP i establir protocols de comunicació adients (IPP, SMB, HP Jetdirect, AppleTalk, etc.).

Protocols

Els protocols de comunicació descriuen el format dels missatges a intercanviar entre equips interconnectats per poder establir una comunicació i diàleg efectiu. Aquesta descripció inclou:

  • Sintaxi: especifica com són i com es construeixen els missatges.
  • Semàntica: descriu què significa cada ordre i la seva resposta.
  • Sincronització: defineix la seqüència correcta de peticions i respostes.

Els protocols poden implementar-se per maquinari o per programa, poden incloure autenticació, detecció i correcció d’errors, i són necessaris en els diferents nivells OSI de la xarxa, des del nivell físic fins al nivell d’aplicació.

Els principals protocols de comunicació que es poden fer servir en l’àmbit dels sistemes d’impressió són el següents:

  • Protocol LPD/LPR
  • Protocol IPP
  • AppSocket
  • AppleTalk
  • SMB/CIF
Protocol LPD/LPR

El Protocol LPD/LPR (line printer daemon/line printer remote protocol) és el protocol originalment implementat a la plataforma BDS Unix. Fa servir TCP/IP per establir connexions entre impressores i ordinadors en una xarxa (vegeu la figura). Aquest protocol treballa normalment escoltant peticions al port TCP 515 i consta de dos components:

  • Line printer remote (LPR) és el terme per al procés client d’enviament de treballs d’impressió a una impressora o cua d’impressió. L’estació de treball que envia la tasca d’impressió és el client LPR.
  • Line printer daemon es refereix al procés de recepció de treballs d’impressió des d’un client LPR. Les impressores o servidors d’impressió que reben els treballs d’impressió s’anomenen servidors LPD.

Figura Impressió mitjançant el protocol LPD/LPR

Quan un usuari envia un document per imprimir, l’ordinador (LPR client) genera unt treball en un determinat format, per exemple, PostScript. Les dades d’impressió es composen d’un fitxer de dades amb el contingut real que es vol imprimir, i un fitxer de control que inclou la descripció de l’arxiu de dades, nom del treball, propietari, nombre de còpies a imprimir, cua de destí, etc. A continuació, el treball d’impressió s’envia a l’adreça IP del servidor LPD, que el rep habitualment a través del port TCP/IP 515. Es poden configurar i definir diverses cues al servidor d’impressió LPD, de manera que el fitxer de control del treball d’impressió ha d’incloure informació sobre quina cua ha de ser assignada.

Protocol IPP

El protocol d’impressió per Internet (IPP o Internet printing protocol) defineix extensions del conegut protocol HTTP (hypertext transport protocol) per donar suport als serveis d’impressió remots, configuració d’impressores i gestió de cues. A diferència d’altres protocols, IPP permet control d’accés, autenticació i xifrat per donar solucions d’impressió més completes i segures. És el protocol usat de forma nativa per CUPS i acostuma a fer servir el port 631.

HTTP

El protocol de transport d’hipertext (hypertext transport protocol) es fa servir per transferir pàgines web a través d’Internet.

AppSocket

Aquest protocol està basat en el protocol Jetdirect de Hewlett-Packard. Acostuma a treballar al port 9100 i es considera molt fiable, senzill i ràpid.

AppleTalk

És un conjunt de protocols de comunicació d’Apple que permet, entre altres coses, la comunicació amb impressores i servidors d’impressió

SMB/CIF

Samba

És la més popular implementació en codi lliure del protocol SMB/CIFS (entre d’altres) i permet la compartició d’arxius i impressores en xarxes heterogènies.

El servidor de blocs de missatges (server message block) i la seva evolució, el sistema d’arxius comú d’internet (common Internet file system), són protocols de xarxa de la capa d’aplicació del model OSI que permeten gestionar i compartir arxius i impressores entre nodes d’una xarxa. SMB fa servir el port TCP 445 i va ser ideat per IBM, però modificat i perfeccionat per Microsoft, que el fa servir en els seus sistemes operatius Windows. També hi ha implementacions del protocol en codi lliure per a sistemes Linux.

Descripció d'un sistema d'impressió

Imprimir pot semblar una tasca senzilla, però comporta una sèrie d’inconvenients i necessitats que els sistemes d’impressió actuals resolen mitjançant la implementació de diferents mòduls:

  • El planificador de cues d’impressió (spooler)
  • Els filtres
  • Els controladors d’interfície o backends

El primer problema sorgeix perquè la majoria de les impressores no tenen memòria suficient per carregar un document complet. Aquest és un dels motius que fan necessari disposar de cues d’impressió i d’un sistema que les gestioni (spooler). El gestor de la cua monitoritza la impressora i envia el treball següent en el moment en què queda lliure. La ubicació de les cues d’impressió està determinada per la complexitat del sistema d’impressió. Les cues poden estar situades, tal com es mostra a la figura, a les localitzacions següents:

  • L’ordinador client
  • El servidor d’impressió
  • Un servidor intermediari d’arxius

Figura Sistemes d’impressió i ubicació de les cues d’impressió (spooler) en l’ordinador client, en el servidor d’impressió i en el servidor d’arxius

El següent problema a resoldre és el gran nombre de models d’impressora disponibles al mercat que fan servir seqüències de control diferents, és a dir que parlen llenguatges propis que requereixen una traducció. El filtres són les eines, entre el planificador i les impressores, que fan aquesta traducció entre les dades d’entrada i el llenguatge que entén la impressora.

El darrer pas de la cadena és l’enviament de dades al perifèric d’impressió mitjançant algun dels canals i interfícies físiques que s’han descrit. Cadascuna d’aquestes interfícies requereix un controlador de dispositiu o backend que gestiona i controla el port de comunicació físic (USB, paral·lel, RS232…) o bé la connexió de xarxa (IPP, AppSocket, etc.). El concepte modular del controlador backend permet afegir nous tipus d’interfícies segons avanci la tecnologia sense afectar la resta de l’arquitectura.

Figura Estructura d’un sistema d’impressió

A la figura es mostren esquemàticament el mòduls que descriuen un sistema d’impressió modern.

Sistemes d'impressió Unix/Linux

La tasca d’impressió a Unix s’ha realitzat històricament fent servir un d’aquest dos sistemes de gestió d’impressió: el sistema d’impressió d’AT&T (Unix System V) i el dimoni d’impressores en línia (LPD) de Berkeley. Aquests sistemes van estar dissenyats als anys 70 amb l’únic propòsit d’imprimir text en impressores de caràcters. Per aquest motiu han aparegut noves opcions amb més prestacions, com ara LPRng o el sistema CUPS, encara que s’ha intentat sempre conservar la compatibilitat i sintaxi de les ordres de consola originals.

A continuació s’enumeren breument els principals sistemes d’impressió a Unix/Linux:

/etc/pintcap

Aquest és l’arxiu de configuració del sistema d’impressió lpd que conté el registre i definició de totes les impressores del sistema, amb indicació de l’àlies, nom del dispositiu, directori de la cua de treballs, filtres, etc.

  • LPD, sistema d’impressió Berkeley: aquest és el tradicional gestor d’impressió d’Unix de la plataforma Unix BSD. És controlat pel dimoni d’impressores de línia (line printer daemon) situat a /usr/sbin/lpd i fa servir el protocol LPD/LPR. Els clients es comuniquen amb el dimoni mitjançant el dispositiu /dev/printer i fan servir l’arxiu de configuració /etc/printcap per determinar el directori de la cua de treballs d’impressió.
  • LPRng: LPR és una implementació en codi lliure que millora el sistema d’impressió BDS però mantenint la compatibilitat, ja que també fa servir el dimoni LPD. Inclou noves funcionalitats en el control de la cua de treballs i les funcions de servidors d’impressió en xarxa.
  • CUPS: el sistema d’impressió comú d’Unix és un potent i complet gestor d’impressió basat en el protocol IPP (Internet printing protocol) i integrant PostScript com el llenguatge de definició de pàgines estàndard. La majoria de distribucions Linux ja incorpora CUPS com a sistema d’impressió per defecte.

Sistema d'impressió comú d'Unix (CUPS)

CUPS (common Unix printing system) és un sistema d’administració i gestió d’impressió portable i extensible per als sistemes operatius de la família Unix/Linux. Va ser desenvolupat per Easy Software Products i alliberat com a programari lliure amb llicència GNU/GPL.

CUPS fa servir el protocol IPP, funciona amb LPD/LPR i proporciona accés a clients Linux, Windows i Mac OS.

Descripció del sistema CUPS

De manera semblant a altres sistemes d’impressió, CUPS està dissenyat al voltant d’un procés de planificació d’impressió (scheduler) que distribueix els treballs d’impressió, processa les ordres administratives i proporciona informació i monitorització de l’estat de les impressores i els treballs. Aquest procés correspon al dimoni anomenat cupsd, que s’acostuma a carregar en l’arrencada del sistema treballant en segon pla i al que farem referència com a planificador.

El planificador o scheduler gestiona les peticions que arriben tot seguint el protocol IPP. Aquest treballs poden provenir de l’ordinador local o bé de clients en xarxa de diverses plataformes (Linux, Windows, Mac OS) i generen dos arxius, un amb les dades pròpiament dites, i un arxiu de control amb informació sobre el treball d’impressió. Aquests arxius es guarden al directori /var/spool/cups.

Els treballs d’impressió poden incorporar text, gràfics i imatges vectorials o de mapa de bits. Aquests tipus de dades són reconegudes fent servir les entrades de l’arxiu /etc/cups/mime.types (o bé /var/share/cups/mime/mime.types). Per descriure aquests elements, CUPS fa servir de forma estàndard el llenguatge de programació de gràfics PostScript desenvolupat per Adobe. Els filtres de conversió en funció del tipus de dades estan determinats a l’arxiu /etc/cups/mime.convs (o bé a /var/share/cups/mime/mime.convs).

El planificador gestiona les impressores disponibles a la xarxa local i els envia els treballs d’impressió fent servir els filtres i controladors d’interfície (backends) apropiats, que estan situats a /usr/lib/cups/backend.

  1. $ ls /usr/lib/cups/backend
  2.  
  3. behdnssd hpfaxipp parallel serial socket
  4. cups-pdf hp httplpd scsi snmp usb

Les impressores compatibles amb PostScript poden interpretar directament les dades rebudes del planificador sense necessitar un filtre específic. En el cas d’impressores que no siguin PostScript cal fer la traducció al llenguatge objectiu de la impressora mitjançant els filtres subministrats o amb altres aplicacions com ara Ghostscript, programari també de codi lliure.

Ghostscript

És un programa intèrpret d’arxius PS (PostScript) i PDF (portable document format) que permet representar-los en pantalla i traduir-los de manera que puguin ser impresos en una impressora amb capacitat gràfica.

Un cop el treball ha estat transferit a la impressora, el planificador esborra l’arxiu de dades de la cua a /var/spool/cups, però deixa l’arxiu de control, on queden numerats correlativament (des del primer, /var/spool/cups/c00001).

Altres característiques addicionals proporcionades per CUPS són:

  • Servei de directori: anomenat examinador d’impressores(printer browsing). Els clients poden trobar automàticament i fer servir impressores de qualsevol servidor de la xarxa. Si aquesta funció està activada, el servidor distribueix per la xarxa la informació de les impressores disponibles mitjançant missatges de difusió general (broadcasting) cada poc temps.
  • Classes: CUPS també permet definir classes, que són grups d’impressores de característiques semblants. Els treballs d’impressió enviats a una classe són redreçats a la primera impressora disponible d’aquella classe. Aquest esquema també permet habilitar seguretat i repartiment de càrregues definint la mateixa impressora en diversos servidors.
  • Suport clients LPD: fent servir un minidimoni (cups-lpd) que atén totes les tasques d’impressió rebudes per LPD i les redreça al subsistema CUPS tot convertint-les a protocol IPP.
  • Administració web: aquest servidor també actua com a servidor web per a la documentació, monitorització d’estat i administració del sistema.
  • Impressió des de línia d’ordres: CUPS entén directament molts tipus diferents d’arxius, incloent text, PostScript, PDF i arxius d’imatge. Això li permet imprimir aquest arxius des de les aplicacions d’usuari o directament des de la línia d’ordres.

La figura mostra l’esquema descriptiu del sistema d’impressió CUPS.

Figura Esquema descriptiu del sistema d’impressió CUPS

Instal·lació i configuració de CUPS

Instal·lació de CUPS

La instal·lació de CUPS no suposa cap complicació. CUPS està incorporat per defecte en la majoria de distribucions però, en qualsevol cas, només cal instal·lar el paquet:

  1. $ apt-get install cups

Per instal·lar el client de CUPS a la plataforma Linux:

  1. $ apt-get install cups-client

En principi CUPS està pensat perquè tant els clients com el servidor funcionin amb el mateix protocol IPP. Si els clients fan servir LPD/LPR o LPRng, cal instal·lar un dimoni de compatibilitat (cups-lpd) disponible amb el paquet:

  1. $ apt-get install cups-bds

Convé també tenir instal·lats els paquets que contenen els arxius PPD (PostScript printer description) que Debian distribueix en dos paquets: openprinting-ppds per a impressores PostScript i foomatic-filters-ppds per a impressores no PostScript.

  1. $ apt-get install openprinting-ppds foomatic-filters-ppds

Tots aquests paquets esmentats solen estar ja instal·lats en la configuració servidor de Debian.

Un altra utilitat que sol incorporar l’escriptori GNOME és system-config-printer, que permet gestionar el servei CUPS. En cas de necessitar instal·lació:

  1. $ apt-get install system-config-printer

Finalment, és interessant també instal·lar cups-pdf, una impressora virtual per imprimir documents a un arxiu PDF, ja que resulta molt útil per fer proves d’impressió i conversió de documents a format PDF.

  1. $ apt-get install cups-pdf

PDF (portable document format)

És un format obert d’emmagatzematge de documents desenvolupat per Adobe que pot incorporar text i elements multimèdia (imatges bitmap i vectorials, so, vídeo, enllaços, etc.). És un format independent del dispositiu i especialment dissenyat per a la visualització i impressió de documents.

Configuració i administració de CUPS

La configuració i administració de CUPS consisteix bàsicament en assignar permisos i accés, definir i configurar impressores, classes i cues d’impressió i gestionar els diferents treballs d’impressió. Aquestes tasques les podem fer de diferents maneres:

  • Modificant directament els arxius de configuració
  • Mitjançant ordres de consola (SystemV, BDS o pròpies de CUPS)
  • Mitjançant una aplicació gràfica nativa (ex. sytem-config-printer)
  • Mitjançant la interfície web que proporciona CUPS (http://localhost:631)

CUPS també genera una sèrie d’arxius on enregistra informació rellevant per al control i seguiment del seu funcionament (arxius de registre o log).

A la figura es mostra un esquema amb les alternatives de configuració i administració de CUPS.

Figura Alternatives per a l’administració i configuració de CUPS

Arxius de configuració del servidor CUPS

CUPS té un sistema d’administració basat en diferents arxius de configuració que s’enumeren amb detall a continuació:

Cues d'impressió

Una impressora pot tenir associada més d’una cua d’impressió. Per exemple, en les impressores en color és útil disposar de dues cues, una per als treballs en color i una altra per als treballs en blanc i negre.

  • Configuració del servidor: /etc/cups/cupsd.conf és l’arxiu principal que centralitza la configuració del sistema d’impressió. De característiques semblants a l’arxiu de configuració del servidor Apache, defineix les característiques del servidor CUPS.
  • Definició d’impressores: /etc/cups/printers.conf conté la llista d’impressores locals definides amb informació de la cua d’impressió associada o de com està connectada i amb quina interfície.
  • Arxius PPD (PostScript printer description): cada cua d’impressió té el seu propi arxiu de configuració situat al directori /etc/cups/ppd. Aquests arxius contenen les opcions de configuració de la impressora (mida i orientació del paper, resolució, escala…).
  • Classes d’impressores:/etc/cups/classes.conf conté la llista de classes d’impressores definides localment.
  • Tipus MIME: /etc/cups/mime.types (o bé /usr/share/cups/mime/mime.types)indica els tipus d’arxius MIME admesos (text/plain, application/postcript…).
  • Regles de conversió: /etc/cups/mime.convs (o bé /usr/share/cups/mime/mime.convs) defineix quin o quins filtres estan disponibles per convertir arxius d’un format a un altre. Els filtres estàndard admeten text, arxius PDF, PostScript i molts tipus de formats d’imatge.

Tipus MIME

Els tipus MIME (multipurpose Internet mail extensions) són unes convencions que descriuen determinats tipus d’arxius (text, àudio, vídeo, etc.) per facilitar el seu intercanvi per Internet.

Arxius de registre

El planificador manté tres arxius bàsics de registre (log files), que normalment es guarden al directori /var/log/cups i que són els següents:

  • access_log: enregistra totes les peticions HTTP i IPP processades pel planificador de cues. Un exemple d’una entrada d’aquest arxiu:
  1. 192.168.56.11 - - [31/Jan/2012:01:52:58 +0100] "POST /printers/PDF HTTP/1.1" 200 873 Print-Job successful-ok
  • error_log: conté tots els missatges d’error del planificador per poder fer una anàlisi i seguiment dels problemes. Exemple:
  1. E [30/Jan/2012:23:45:45 +0100] Unable to bind socket for address ::1:631 - Cannot assign requested address.
  • page_log: enregistra un llistat de totes les pàgines que s’han imprès.
  1. DeskJet root 2 [20/May/1999:19:21:05 +0000] 1 1 acme-123 localhost myjob letter one-sided

Els arxius de registre són gestionats pel mateix CUPS, que en controla la rotació quan la seva mida sobrepassa el màxim configurat, que per defecte és 1 Mb.

logrotate

En el cas de configurar la mida màxima dels arxius de registre a 0, el planificador deixa d’encarregar-se de la seva rotació i es poden fer servir per al manteniment d’aquests arxius altres utilitats de Linux com ara logrotate.

Configuració manual del servidor CUPS

El comportament del servidor CUPS es configura mitjançant les directives contingudes a l’arxiu /etc/cups/cupsd.conf. Aquest arxiu de configuració té la mateixa sintaxi que l’arxiu principal de configuració del servidor HTTP d’Apache.

Per exemple, la secció location especifica les directives de control d’accés i les opcions d’autenticació per al directori o recurs HTTP especificat. Aquests àmbits d’actuació corresponen a cada un dels directoris que s’enumeren a la taula i que tenen correlació amb les diferents seccions de la interfície web d’administració.

Taula Descripció dels directoris configurables a la secció location
Directori Descripció
/Directori general de totes les operacions administratives
/adminDirectori de totes les operacions administratives (per exemple afegir i esborrar impressores)
/admin/confDirectori d’accés als arxius de configuració de CUPS (cupsd.conf, client.conf, etc.)
/admin/logDirectori d’accés als arxius de registre de CUPS (access_log, error_log, page_log)
/classesDirectori de les classes d’impressores
/classes/nameDirectori d’una determinada classe d’impressores
/jobsDirectori dels treballs d’impressió
/printersDirectori de les impressores
/printers/nameDirectori d’una determinada impressora
/printers/name.ppdDirectori d’un determinat PPD (Printer description file)

Cada secció location defineix l’accés a un directori determinat i als seus subdirectoris. En l’exemple següent la directiva allow configura l’accés administratiu a tot el directori arrel de CUPS que, en aquest cas, només es permet des de la màquina local (127.0.0.1).

  1. <Location />
  2.  
  3. Order Deny,Allow
  4. Deny From All
  5.  
  6. Allow From 127.0.0.1
  7.  
  8. </Location>

En aquest mateix exemple la directiva order configura el comportament de la resta de directives allow i deny amb les possibilitats següents:

  • Order Allow,Deny: permet l’accés a totes les IP excepte aquelles que apareixen a la directiva deny.
  • Ordre Deny,Allow: només permet l’accés a les IP llistades en directives allow.

No només podem determinar des d’on es pot accedir, sinó el nivell d’autenticació necessari mitjançant la directiva require, que té les opcions següents:

  • group: per indicar a continuació els noms del grups autoritzats.
  • user: tot indicant a continuació els noms dels usuaris autoritzats o bé dels grups que han d’estar precedits del símbol arrova (@). Els grups poden ser grups predeterminats (@SYSTEM, @OWNER…) o bé grups específics (@NomGrup).
  • valid-user: permet l’accés a qualsevol usuari correctament identificat.

L’opció per defecte és que no es requereix autenticació.

En aquest segon exemple, la secció location configura la impressió i gestió d’impressores. Les directives allow permeten accedir només des del propi ordinador (localhost) o des d’algun ordinador de la xarxa de classe C 192.168.1.(1-254). Les directives require permeten la validació de l’usuari Joan, de qualsevol usuari dels grups alumnes i professors i del grup predeterminat de sistema.

  1. <Location /printers>
  2. Order Deny,Allow
  3. Deny From All
  4.  
  5. Allow From 127.0.0.1
  6. Allow From 192.168.1.*
  7.  
  8. Require group alumnes
  9. Require user joan
  10. Require user @professors
  11. Require user @SYSTEM
  12. </Location>

Un altra directiva important és listen que permet definir les adreces i ports que són escoltats a l’espera d’una connexió IPP. En la definició de la IP es pot fer servir el comodí (*). Per defecte s’accepten connexions de la màquina local pel port 631.

  1. Listen 127.0.0.1:631

Es presenta un resum de les possibles directives a la taula.

Taula Resum d’algunes directives de l’arxiu /etc/cups/cupsd.conf
DirectivaDescripció
LocationDefineix una secció per a l’assignació de permisos d’accés i nivell d’autorització a un directori determinat.
Allow / DenyDins d’una secció location especifica les adreces IP que poden accedir a un directori determinat del servidor.
RequireDefineix el conjunt d’usuaris que poden accedir al servei.
ListenIndica les adreces/ports escoltats pels servidor.
AccesLog
ErrorLog
PageLog
Especifica el nom i adreça absoluta de la ubicació dels arxius de registre.
DefaultLanguageEspecifica el llenguatge per defecte que faran servir les connexions del clients (opcions de, en, es, fr, it).
LoglevelDetermina el nivell d’enregistrament de l’arxiu error_log.
MaxClientsDefineix el nombre màxim de clients simultanis.
MaxJobs
MaxJobsPerPrinter
MaxJobsPerUser
Permet limitar el nombre màxim de treballs d’impressió totals, per impressora o per usuari.
Browsing On
Browsing Off
Activa/desactiva l’enviament de paquets UDP broadcast per informar a la xarxa de les impressores disponibles.

Cal recordar que perquè els canvis a l’arxiu /etc/cups/cupsd.conf tinguin efecte és necessari reiniciar el servei:

  1. /etc/init.d/cups restart

A més de les pàgines de man, hi ha una extensa descripció i exemples de totes les directives de /etc/cups/cupsd.conf al manual de referència oficial que trobareu a la secció “Adreces d’interès”.

Trobareu la referència de totes les directives de configuració del servidor CUPS a la pàgina del manual associada:

  1. man cupsd.conf

Configuració dels clients CUPS

Com ja s’ha comentat, CUPS pot treballar amb clients de diferents plataformes i protocols, però disposa del seu propi client amb protocol IPP que es configura mitjançant l’arxiu /etc/cups/client.conf o bé ~/.cups/client.conf segons es vulgui configurar per a tots els usuaris o per a un usuari concret. Aquest arxiu només conté dues directives molt simples:

  • Encryption: defineix la configuració de xifrat del client (never-IfRequested-Required-Always). Per defecte és IfRequested.
  • ServerName: indica el nom o adreça del servidor que rebrà les sol·licituds del client.

Exemple de contingut de l’arxiu client.conf:

  1. Encryption IfRequested
  2. ServerName 192.168.56.10:631

Un altre arxiu de configuració de la part client és /etc/printcap, que és genera i actualitza automàticament a partir de l’arxiu /etc/cups/printers.conf. Aquest arxiu és important, ja que el seu contingut és consultat per les aplicacions d’usuari (com per exemple OpenOffice) per generar el llistat d’impressores disponibles en les seves opcions i menús d’impressió.

Administració web de CUPS

El dimoni planificador (scheduler) de CUPS és una aplicació de servidor que gestiona peticions HTTP. A més d’atendre les peticions d’impressió rebudes pel protocol IPP, el planificador també actua com un complet servidor web per oferir documentació, monitorització de l’estat de les cues i treballs i administració del sistema d’impressió.

Per defecte s’accedeix a aquest servidor web pel port 631. Així, en la màquina local, només cal obrir qualsevol navegador indicant l’adreça http://localhost:631 perquè aparegui la pantalla de la figura.

Figura Pantalla inicial del servei d’administració web de CUPS

A la primera pàgina hi surten enllaços per arribar a diferents fonts de documentació per a usuaris, administradors i desenvolupadors. La secció que ho resumeix tot és la d’administració (vegeu la figura), on hi ha enllaços a les altres seccions (impressores, classes i treballs d’impressió) i que permet fer les tasques següents:

Kerberos

Kerberos és un protocol d’autenticació de xarxes d’ordinadors desenvolupat per l’Institut Tecnològic de Massachusetts (MIT) que permet a dos ordinadors, tant client com servidor, verificar mútuament la seva identitat en una xarxa insegura.

  • Configurar el servidor: Hi han algunes opcions del servidor que es poden configurar automàticament marcant la casella corresponent.
    • Veure les impressores compartides per altres ordinadors de la xarxa.
    • Compartir les impressores locals.
    • Permetre l’administració des d’ordinadors remots.
    • Fer servir el sistema d’autenticació Kerberos.
    • Permetre als usuaris cancel·lar treballs d’altres usuaris.
    • Configurar en nivell d’enregistrament dels arxius de registre.
  • Edició directa de l’arxiu de configuració: per ajustar de manera més detallada i completa les opcions de configuració es pot accedir a l’edició directa de les directives contingudes a l’arxiu /etc/cups/cupsd.conf. Un cop fetes les modificacions, el mateix sistema s’encarrega de reiniciar el servei.
  • Visualitzar els arxius de registre: tant els de accés com els de missatges d’error i la llista de pàgines impreses.
  • Administrar impressores: gestionar les impressores del sistema, trobar automàticament aquelles que estiguin connectades o bé donar-les d’alta manualment.
  • Administrar classes: gestionar les classes d’impressores o gestionar les existents.
  • Administrar treball d’impressió: visualitzar els treballs d’impressió (jobs), tant els finalitzats com els que estan en curs que es poden gestionar (cancel·lar, aturar, canviar de cua…).

Figura Pantalla principal d’administració del servidor

Per poder gestionar CUPS cal ser superusuari o bé usuari amb drets administració d’impressió formant part del grup lpadmin.

Administració gràfica del servidor

La majoria de distribucions disposen, a més de l’opció de configuració web, d’alguna eina alternativa per facilitar l’administració gràfica del sistema d’impressió. Una de les més esteses i que està configurada per defecte a la distribució Debian és system-config-printer (vegeu la figura), que es pot iniciar des de consola o bé accedint al menú Sistema > Administració > Impressió.

Figura Finestra principal del gestor d’impressió system-config-printer

L’eina administrativa system-config-printer ha estat desenvolupada en llenguatge Phyton i permet funcions semblants a l’administrador web, però amb l’avantatge de ser una aplicació nativa. D’altra banda, no està limitada a la configuració de la màquina local, ja que també pot fer servir els protocols IPP i HTTP per comunicar-se amb servidors CUPS remots.

Ordres de consola per a la gestió d’impressores i treballs

CUPS proporciona compatibilitat i emula les ordres de consola tradicionals de les principals plataformes Unix (Unix Berkeley BDS i Unix System V). A la taula es presenten les principals ordres de consola, tot indicant la seva utilitat i de quin sistema provenen originalment.

Unix BDS i Unix System V

Berkeley Software Distribution és una de les plataformes històriques d’Unix, inicialment desenvolupada en aquesta universitat de Califòrnia. Trobem en l’actualitat evolucions i descendents seus en codi lliure com FreeBDS i OpenBDS, així com propietàries com Mac OS X.

Unix System V ésuna altra de les principals plataformes Unix que han evolucionat en implementacions propietàries com Solaris, HP/UX o SCO OpenServer.

Taula Principals ordres de consola reconegudes pel sistema CUPS
Ordre Sistema Descripció
lpSysVImprimeix arxius.
lprBSDL’ordre d’usuari per a tasques d’impressió.
lpcBSDControl d’impressores i cues (només lectura).
cupsdCUPSDimoni de CUPS.
cupsaddsmbCUPSExporta impressores a Samba per a clients Windows.
lpadminSysVConfigura les impressores i classes de CUPS.
lpinfoCUPSMostra els dispositius disponibles.
lpmoveSysVMou treballs entre diferents cues d’impressió.
lpqBSDMostra l’estat de la cua d’impressió.
lprmBSDEsborra un treball de la cua d’impressió.
cancelSysVCancela treballs d’impressió.
disableSysVAtura impressores i classes d’impressora.
enableSysVInicia impressores i classes d’impressora.
lpoptionsCUPSMostra o estableix les opcions de la impressora i les opcions per defecte.
lpstatSysVMostra informació de la cua d’impressió.
lppasswd CUPSAfegeix, canvia o esborra contrasenyes.
cups-configCUPSObté informació de l’API de CUPS, el compilador i els directoris.

Cal remarcar que CUPS només proporciona compatibilitat amb l’ordre lpc d’administració d’Unix BDS en mode de lectura. Així, doncs, per a l’administració per línia d’ordres, és més habitual fer servir l’ordre lpadmin de System V.

A continuació es comenten les principals tasques administratives de control d’impressió fent servir ordres de consola.

Generar treballs d'impressió

Ordres relacionades amb la generació de treballs d’impressió:

  • Imprimir un arxiu en la impressora per defecte del sistema:
  1. $ lp nomArxiu
  2. $ lpr nomArxiu
  • Imprimir un arxiu en una impressora específica:
  1. $ lp -d nomImpressora nomArxiu
  2. $ lpr -P nomImpressora NomArxiu
  • Impressió de la sortida d’un programa: Les ordres lp i lpr accepten canonades per imprimir la sortida estàndard de qualsevol altra ordre o programa:
  1. $ programa | lp
  2. $ programa | lpr

A la taula es detallen les principals opcions de les ordres lp i lpr.

Taula Resum d’opcions de les ordres lp i lpr
Ordre lp (System V) Ordre lpr (BSD) Descripció
-c Fa una còpia de l’arxiu que està sent imprès.
-m-mEnvia un correu electrònic en acabar la impressió.
-s Deixa de mostrar els missatges informatius.
-w Mostra un missatge a la pantalla en finalitzar la impressió.
-d nomImpres-P nomImpresEnvia el treball a la impressora “nomImpres”.
-n númCòpies-# númCòpiesNombre de còpies a imprimir.
-p númPàg Els números de les pàgines que es volen imprimir en ordre ascendent. Es poden especificar pàgines separades, un rang de números o ambdues opcions.
-q númPrioritat Assigna una prioritat al treball dins de la cua d’impressió mitjançant un nombre sencer entre 0 (prioritat màxima) i 39 (prioritat mínima).
-t “títol”-T “títol”Imprimeix el títol a la pàgina de portada del treball d’impressió.

Llistar impressores disponibles

Ordres relacionades amb el llistat d’impressores disponibles:

  • Molts sistemes tenen més d’una impressora a disposició de l’usuari. Per obtenir un llistat de les impressores i classes disponibles:
  1. $ lpstat -p
  2. printer ClasseBN disabled since dt 31gen2012 18:57:57 CET
  3. printer hp9040DN is idle. enabled since dt 31gen2012 18:23:36 CET
  4. printer PDF is idle. enabled since dt 31gen2012 01:47:33 CE
  • Alternativament es pot fer servir l’ordre lpc:
  1. $ lpc status

Assignar impressora per defecte

Per definir quina és la impressora que rebrà els treballs per defecte:

  1. $ lpoptions -d nomImpressora

Administració de treballs d'impressió

Ordres relacionades amb l’administració de treballs d’impressió:

  • Per eliminar un treball d’impressió pendent en la cua.
  1. $ cancel id_Treball
  2. $ lprm id_Treball
  • Cancel·lar tots els treballs d’un usuari determinat:
  1. $ cancel -u NomUsuari
  2. $ lprm NomUsuari
  • Trasllat d’un treball d’impressió. Amb aquesta ordre es mou un treball d’impressió a una altra impressora o classe d’impressores.
  1. $ lpmove id_Treball nomImpressora
  • Podem obtenir l’identificador d’un treball (id_Treball) amb les ordres
  1. $ lpq
  2. $ lpstat
  • Imprimir diverses còpies. Tant l’ordre lp com l’lpr tenen opcions per a la impressió de més d’una còpia d’un arxiu:
  1. $ lp -n num_copies nomArxiu
  2. $ lpr -# num_copies nomArxiu

Gestió de classes

Ordres relacionades amb la gestió de les classes d’impressora:

  • Afegir una impressora a una classe. En aquest exemple afegim la impressora HP9040 a la classe d’impressores en blanc i negre:
  1. $ lpadmin -p hp9040 -c ClasseBN
  • Retirar una impressora d’una classe. En aquest cas eliminem la impressora virtual PDF de la classe d’impressores en color.
  1. $ lpadmin -p PDF -r ClasseColor

Si la classe no existeix es crea automàticament en afegir la primera impressora. Si la classe queda buida s’esborra. Es poden comprovar les classes existents a l’arxiu /etc/cups/classe.conf.

Habilitar o denegar l'accés a usuaris

Ordres relacionades amb el control d’accés d’usuaris:

  • Per determinar el control d’accés dels usuaris a una determinada impressora es fa servir l’ordre lpadmin amb l’opció -u i a continuació les llistes d’usuaris amb permís (allow) o sense permís (deny).
  1. $ lpadmin -p hp9040DN -u allow:joan,laia
  • A les llistes es por fer servir l’expressió all (tots) i none (ningú). En el següent exemple es permet l’accés a la impressora HP9040DN a tothom menys als usuaris Josep i Anna.
  1. $ lpadmin -p hp9040DN -u allow:all deny:josep,anna

Imprimir canviant les opcions de la impressora

La configuració per defecte de la impressora pot ser suficient en la majoria d’ocasions. Si cal canviar alguna opció en imprimir un determinat arxiu podem fer servir l’opció -o de les ordres lp i lpr, tal com es mostra en aquest exemple on indiquem orientació de paper, escala i mida del paper:

  1. lp -o landscape -o scaling=80 -o media=A4 nomArxiu.jpg
  2. lpr -o landscape -o scaling=70 -o media=A3 nomArxiu.pdf

Les opcions d’impressió disponibles varien depenent de la impressora i es poden consultar a l’arxiu PPD corresponent. Les opcions d’impressió estàndard es descriuen breument a la taula.

Taula Resum de les opcions de configuració estàndard de la impressora
Opció Descripció
landscapeIndica orientació apaïsada.
media=Mida del paper. Alguns valors poden ser: Letter, Legal, A3, A4, A5… en funció de cada impressora.
sides=Indica la impressió en les dues cares amb eix al costat curt (two-sided-short-edge) o al costat llarg (two-sided-long-edge)
page-ranges=Especifica els números de pàgina (separats per coma) o rangs de pàgines (guionet) a imprimir. Ex. 1-4, 7, 9-12.
page-set=Imprimeix només les pàgines parells o senars (odd, even).
outputorder=Indica l’ordre d’impressió (normal, reverse).
cpi=Caràcters per polsada (10, 12, 17…).
lpi=Línies per polsada (6, 8…).
columns=Formata el text en dues o més columnes.
page-left=
page-right=
page-top=

page-bottom=
Especifica el marge esquerra (left), dreta (right), superior (top) i inferior (bottom) mesurat en punts (1 pt = 1/72 polsades).
scaling=Percentatge entre 1 i 800 de mida en relació a la pàgina.
natural-scaling=Percentatge entre 1 i 800 en relació a la mida original.
ppi=Resolució de la imatge (1-1.200) en píxels per polsada.
job-sheets=Impressió de pàgines de coberta (none, standard, classified).
brightness=
Corregeix els valors de brillantor (brightness). Per sota de 100 enfosqueix la imatge.
gamma=Valors de correcció gamma. Per sota de 1.000 enfosqueix la imatge.

Canviar les opcions predeterminades

Totes les opcions anteriors s’apliquen a un treball d’impressió determinat. Si volem que una impressora quedi permanentment configurada amb una opció determinada hem de fer servir l’ordre lpoptions amb la sintaxi següent:

  1. $ lpoptions -p NomImpressora -o NomOpcio=ValorOpcio

Així, en l’exemple següent es deixa com a predeterminda la mida de la pàgina per defecte de la impressora HP9040:

  1. $ lpoptions -p hp9040 -o PageSize=Letter

Tanmateix, aquest canvi pot tenir efecte per a un conjunt d’usuaris diferent segons qui ha fet l’ordre:

  • Si l’ordre ha estat feta per un usuari normal, aquesta configuració es guarda a l’arxiu personal ~/.lpoptions i només afecta els treballs d’impressió d’aquest usuari.
  • Si l’ordre la ha efectuat un usuari administrador, aquesta configuració es guarda a l’arxiu /etc/cups/lpoptions i afecta tots els usuaris de la màquina.
  • Si la impressora és compartida i volem que aquesta configuració afecti els treballs que enviïn a la cua tots els clients de la xarxa, serà necessari canviar la configuració per defecte de l’arxiu PPD corresponent mitjançant l’ordre lpadmin i la mateixa sintaxi:
  1. $ lpadmin -p hp9040 -o PageSize=Letter

Per esborrar un canvi d’opcions predeterminades fet amb lpoptions es fa servir la mateixa sintaxi però amb l’opció -r (remove).

  1. $ lpoptions -p hp9040 -r PageSize=Letter

Finalment, si volem visualitzar la configuració completa d’una impressora determinada, per exemple:

El símbol * indica el valor actiu en aquest moment, en aquest exemple: mida A4 i resolució de 300 dpi.

  1. $ lpoptions p hp9040DN -l
  2.  
  3. PageSize/Page Size: Custom.WIDTHxHEIGHT 11x14 11x17 13x19 16x20 16x24 2A 4A 8x10 8x12 A0 A1 A2 A3 *A4 A5 AnsiA AnsiB AnsiC AnsiD AnsiE ArchA ArchB ArchC ArchD ArchE C0 C1 C2 C3 C4 C5 Env10 EnvC5 EnvDL EnvMonarch Executive ISOB0 ISOB1 ISOB2 ISOB3 ISOB4 ISOB5 JISB0 JISB1 JISB2 JISB3 JISB4 JISB5 Ledger Legal Letter RA0 RA1 RA2 RA3 RA4 SRA0 SRA1 SRA2 SRA3 SRA4 SuperA SuperB TabloidExtra Tabloid
  4. Resolution/Output Resolution: 150dpi *300dpi 600dpi 1200dpi 2400dpi
Anar a la pàgina anterior:
Exercicis
Anar a la pàgina següent:
Activitats