Tiparirea la imprimanta: LPRng si CUPS
Sistemul de operare Linux utilizeaza sisteme de tiparire (spooling systems) compatibile BSD. Implementarea folosita difera de la o distributie la alta, însa compatibilitatea cu sistemul BSD a fost mentinuta. Acest tip de sistem poate gestiona imprimante multiple, localizate pe masina locala sau pe alte masini, si cozi de sarcini (cererile de tiparire sunt stocate în cozi de asteptare, pâna când dispozitivul periferic le va putea tipari) multiple. Distributia Red Hat utilizeaza implementarea LPRng (LPR New Generatioii), iar Mandrake - implementarea CUPS(Common UNIXPrinting System} sau optional LPRng.
în principal, sistemul este alcatuit dintr-o colectie de cinci programe fundamentale:
Ipd daemonul de imprimare, care gestioneaza cozile de sarcini (queues) si le
trimite imprimantei
ipr adauga o sarcina (jab) de tiparire în coada de sarcini ipq listeaza sarcinile de tiparire aflate în coada de asteptare iprm sterge o sarcina din coada de sarcini Ipc interfata pentru administrarea sistemului de tiparire.
Sistemele LPRng si CUPS contin si alte programe, care vor fi prezentate în sectiunile 1.1, respectiv 1.2.
Fisierul de configurare principal utilizat de sistemele de tiparire BSD este /etc/printcap. Cele doua implementari amintite mai sus utilizeaza si alte fisiere de configurare - vezi sectiunile urmatoare.
Fisierul /etc/printcap
Acest fisier de configurare descrie imprimantele recunoscute de sistemul de tiparire. Liniile care încep cu "#" sunt considerate comentarii. Câmpurile sunt separate prin caracterul ":". Descrierea caracteristicilor unei imprimante poate contine mai multe linii, acest fapt fiind semnalizat adaugând caracterul "\" la sfârsitul liniei. Valorile tip sir de caractere sunt specificate ca atare (e.g. :st=valoare:), cele numerice încep cu "f" (e.g. :mx#loO:), iar pentru cele booleene se adauga "@" pentru valori le false (e.g. :fd@:). Primul câmp reprezinta numele imprimantei, iar restul câmpurilor - caracteristicile acesteia, dupa cum urmeaza:
|
Administrarea si configurarea sistemelor Linux
Nume câmp |
Tip |
Valoare implicita |
Descriere |
auth 14314k1012o |
sir de caractere |
|
Stabileste tipul autentificarii |
cm |
sir de caractere |
|
Comentariu continând descrierea imprimantei |
connect grace |
Numeric |
|
Intervalul de timp dintre doua sarcini pentru a oferi imprimantei posibilitatea de initializare |
connect interval |
Numeric |
|
Intervalul de timp dintre conectari la imprimanta sau deschideri de port |
connect timeout |
Numeric |
|
Timpul-limita pentru conectare la imprimanta sau deschidere de port |
default_pr inter |
sir de caractere |
Ip |
Imprimanta implicita |
default tmp dir |
sir de caractere |
/tmp |
Directorul pentru fisiere temporare implicit |
ff |
sir de caractere |
\f |
sirul trimis ca formfeed (salt la pagina urmatoare) |
filter |
sir de caractere |
|
Filtrul implicit utilizat pentru tiparire |
fo |
Boolean |
false |
Trimite formfeed imprimantei la deschiderea portului |
f f separator |
Boolean |
false |
Trimite imprimantei formfeed pentru a separa cererile |
fq |
Boolean |
false |
Trimite formfeed imprimantei la închiderea portului |
if |
sir de caractere |
|
Comanda pentru executia filtrului (un program care transforma intrarea într-o forma ce poate fi tiparita) |
If |
sir de caractere |
log |
Fisierul de jurnalizare a erorilor si a informatiilor de depanare |
1P |
sir de caractere |
|
Numele dispozitivului la care se trimite iesirea (vezi infra) |
Ipd bounce |
Boolean |
false |
Filtreaza cererile si apoi le trimite |
max server s active |
Numeric |
|
Numarul maxim de servere active la un moment dat |
mc |
Numeric |
|
Numarul maxim de copii admise |
Setari avansate ale sistemului
nuc |
Numeric |
Marimea maxima a cererii, exprimata în kilobytes; 0 înseamna nelimitat |
Pi |
Numeric |
Stabileste numarul de linii per pagina |
pw |
Numeric |
Stabileste numarul de coloane per pagina |
rm |
sir de caractere |
Numele masinii pe care se afla coada de sarcini (daca este vorba de alta masina decât cea locala). Se utilizeaza împreuna cu rp |
rp |
sir de caractere |
Numele imprimantei la care se trimit sarcinile (daca aceasta se afla pe alta masina decât cea locala). Se utilizeaza împreuna cu rm |
td |
sir de caractere |
Directorul în care se afla cozile de sarcini (în general /var/spool/lpd/nume im primarita) |
send_failur«_ action |
sir de caractere |
remove Actiunea efectuata atunci când transmisia esueaza, astfel: success - considera tiparirea terminata cu succes abort - renunta la tiparire retry - reîncearca tiparirea remove - sterge cererea hold - retine cererea |
sand_ j ob_rw_ _timaout |
Numeric |
Timpul maxim (timeouf) de trimitere a datelor catre imprimanta sau masina pe care se afla coada; 0 înseamna infinit |
send_try |
Numeric |
Numarul de reîncercari daca tiparirea sau trimiterea datelor esueaza; 0 semnifica numar infinit de reîncercari |
8f |
Boolean |
false Dezactiveaza trimiterea deform feed între cereri |
Sh |
Boolean |
false Nu tipareste headere sau bannere |
Pentru lista completa a optiunilor recunoscute de /etc/printcap, a se consulta
mân printcap.
Administrarea si configurarea sistemelor Linux
Prezentam în continuare un fisier /etc/printcap:
##PRINTTOOL3## LOCAL Ijetplus 300x300 a4 LaserJetPlus Default
O
laser:\
:sh:\
:mc=0:\
:mx=0: \
: fq@: \
:sd=/var/spool/Ipd/laser:\
:lp=/dev/lpO:\
:lpd_bounce=true:\
:if=/usr/share/printconf/util/mf_wrapper: ##PRINTTOOL3## REMOTE facturi:\
:sd=/var/spool/lpd/facturi: \
:mx#0:\
:sh:\
:rm=expeditie.biosfarm.ro:\
:rp=facturi:
Dupa cum se observa, au fost definite o imprimanta locala numita laser si o imprimanta aflata pe masina expeditie.biosfarm.ro, numita facturi. Pe respectiva masina, fisierul /etc/printcap defineste imprimanta facturi ca o imprimanta locala, iar ipd este configurat astfel încât sa accepte cereri de tiparire si de pe alte masini.
Numele de dispozitive uzuale sunt:
Numele dispozitivului Tipul dispozitivului
/dev/lpO Primul port paralel
/dev/lpl Al doilea port paralel
/dev/usb/lpO Prima imprimanta USB
/dev/usb/lpl A doua imprimanta USB
Toate directoarele continând cozile de sarcini trebuie sa apartina utilizatorului special daemon si grupului daemon, si trebuie sa aiba dreptul de acces 755.
Programul Ipr
Programul Ipr tipareste un fisier introducându-1 în coada de sarcini. Sintaxa sa este:
| Ipr [ -P imprimanta ] fisier
Tiparirea se va face pe imprimanta implicita, daca nu este utilizat parametrul -p.
Setari avansate ale sistemului
Programul Ipq
Programul Ipq listeaza toate sarcinile aflate în coada de asteptare pentru o anumita imprimanta. Sintaxa sa este:
|Ipq [ -P imprimanta ]
Daca parametrul -p nu este utilizat, va fi considerata imprimanta implicita.
l Ipq -Plaser
Printer: laserSpeak
Queue: l printable job
Server: pid 5566 active
Unspooler: pid 5567 active
Status: IF filter 'mf_wrapper' filter msg - '«/HWResolution[300 300]»setpagedevice' at
Filter_status: laser is ready and printing
Rank Owner/ID Class Job Files Size Time
l dragos@peak+565 A 565 vm-tuning
Programul Iprm
Programul Iprm sterge o sarcina din coada de asteptare. Sintaxa este:
| Iprm [ -P imprimanta ] identificator_sarcina
unde identificatorjsarcinâ reprezinta identificatorul sau "-" daca se doreste stergerea tuturor sarcinilor din coada de asteptare.
# Iprm -Plaser 565
Printer laser@peak:
checking perms 'dragos3peak+565'
dequeued 'dragos3peak+565'
Programul Ipc
Utilitarul Ipc are o interfata tip linie de comanda si are mai multe comenzi interne:
status imprimanta afiseaza starea cozii de sarcini pentru imprimanta
specificata abort imprimanta opreste imediat sarcina care se tipareste si dezactiveaza
tiparirea la imprimanta specificata. Pentru a reactiva
tiparirea, se utilizeaza comanda start stop imprimanta opreste tiparirea dupa ce se termina de tiparit sarcina
curenta. Utilizatorii pot face noi cereri de tiparire, dar
Administrarea si configurarea sistemelor Linux
start imprimanta disable imprimanta
enable imprimanta
down imprimanta up imprimanta quit
acestea nu vor fi tiparite pâna când imprimarea nu va fi
reactivata
reactiveaza tiparirea la imprimanta specificata
refuza noile cererile de tiparire. Utilizatorul root poate
adauga noi cereri. Pentru a opri o imprimanta, cea mai
buna metoda este de a apela disable si a astepta ca
sarcinile aflate în coada sa se termine de tiparit.
Reactivarea se poate face cu enable (vezi injrd)
reda utilizatorilor posibilitatea de a efectua cereri de
tiparire, dupa ce aceasta a fost retrasa cu disable
este echivalent cu disable + stop
este echivalent cu enable + start
paraseste programul Ipc.
1.1. Sistemul LPRng
Sistemul LPRng poate fi configurat în Red Hat cu ajutorul interfetei grafice printconf-gui (meniul System :: Printer Configuration în Red Hat, respectiv Configuration :: Printer Configuration în Mandrake) sau cu ajutorul interfetei mod text printconf-tui:
|
> BJ-300 >
BJ-330 > BJ-5 t> BJC-1000 BJC-ZOOO |
«tp !> BJC-210 > BJC-2100 > BJC-210SP > BJC-240 >
BJC-250 |
Figura 1.1. Programul printconf-gui
Setari avansate ale sistemului
Fisierul de configurare LPRng este în general /etc/ipd.conf. Modul de specificare a valorilor optiunilor este asemanator cu cel utilizat de printcap. De asemenea, optiunile au aceleasi nume ca si câmpurile folosite de printcap. Ele se refera la valorile implicite stabilite pentru toate imprimantele configurate:
trimite form feed
înainte de închiderea portului de imprimanta
fq@
permite numar nelimitat de copii
mc=0
Controlul accesului si autentificarii
Accesul la serviciul de imprimare poate fi configurat prin intermediul fisierului /etc/lpd.perms. Fiecare linie din acest fisier defineste o regula. O asemenea regula va accepta sau respinge o cerere daca regula se potriveste. Daca regula nu se potriveste, va fi verificata urmatoarea, si asa mai departe.
Regulile sunt alcatuite din mai multe elemente. Fiecare element este un cuvânt-.cheie care are atribuita una sau mai multe valori. Cuvintele-cheie recunoscute sunt urmatoarele:
DEFAULT SERVICE
C
M
P
Q
R
X
USER
REMOTEUSER HOST REMOTEHOST
REMOTEPORT
SAMEUSER
SAMEHOST
SERVER
FORWARD
GROUP
REMOTEGROUP REMOTEUSER se LPC
rezultatul implicit
tipul cererii. Poate lua una dintre valorile:
cerere de control prin intermediul Ipc
cerere de stergere din coada cu Iprm
cerere de tiparire cu Ipr
cerere de determinare a starii cu Ipq
cerere de transfer al sarcinii
cerere de conectare
numele utilizatorului
numele utilizatorului de pe masina care efectuaza cererea
numele sau adresa IP a masinii
numele sau adresa IP a masinii de pe care se efectueaza
cererea
numarul portului de pe masina de pe care se face cererea
potrivirea dintre USER si REMOTEUSER
potrivirea dintre HOST sl REMOTEHOST
cererea provine de la serverul Ipd
destinatia sarcinii nu este masina locala
USER se afla în grupul specificat în baza de date de grupuri
Ipd
afla în grupul specificat în baza de date de grupuri Ipd comanda Ipc dintr-o cerere Ipc
Administrarea si configurarea sistemelor Linux
A UTH daca se face autentificare
A UTHTYPE metoda de autentificare
NOT inverseaza potrivirea regulii
Iata un exemplu:
i accepta toate operatiunile mai putin cele nepermise DEFAULT ACCEPT
l permite utilizatorului root sa controleze sarcinile ACCEPT SERVICE=C SERVER REMOTEUSER=root
l de asemenea, permite utilizatorului dragos de pe masina hercules
sa controleze sarcinile
ACCEPT SERVICE=C REMOTEHOST=hercules REMOTEUSER=dragos
refuza
orice alte cereri de control a sarcinilor de tiparire
REJECT SERVICE=C
l accepta doar cererile de tiparire ce provin din reteaua
sau de pe masina locala
REJECT SERV1CE=P NOT REMOTEHOST=10.O.O.O,127 . O . O . l
i accepta ca utilizatorul root sa stearga sarcini din coada ACCEPT SERVICE=M SERVER REMOTEUSER=root
Pentru a exporta imprimantele LPRng catre clienti Windows, a se vedea sistemul SAMBA (cap. 5).
1.2. Sistemul CUPS
Fiecare coada de tiparire are asociata câte un dispozitiv, care poate fi un port paralel, o interfata de retea etc. Numele de dispozitive sunt specificate sub forma de URI (Uniforni Resource Identifiers). De exemplu, primul port paralel este
denumit parallel: /dev/lpO.
Administrarea imprimantelor se poate face fie printr-o interfata Web, localizata la adresa https://locaihost: 631/admin (meniul Configuration :: Printing :: CUPS WWW Admin Tool m Mandrake), fie prin intermediul comenzii Ipadmin.
Setari avansate ale sistemului
|
Figura 1.2. Administrarea imprimantelor CUPS
Programul Ipadmin are urmatoarea sintaxa:
| Ipadmin optiuni ENTER
unde optiuni pot fi: -c clasa
-d imprimanta -m model
-r clasa
-v dispozitiv -D descriere
-E
adauga imprimanta specificata la clasa de imprimante clasa;
daca aceasta nu exista, va fi creata.
stabileste imprimanta implicita.
specifica un driver de imprimanta, în general un fisier ppd.
Lista tuturor modelelor recunoscute poate fi afisata cu
comanda Ipinfo -m.
sterge imprimanta specificata din clasa de imprimante clasa;
daca astfel clasa devine vida, va fi stearsa.
stabileste numele dispozitivului la care se face tiparirea.
stabileste o descriere a imprimantei (e.g. imprimanta lui
Dragos).
activeaza imprimanta si accepta cereri de tiparire.
Administrarea si configurarea sistemelor Linux
-L localizare stabileste localizarea imprimantei (e.g. Catedra de
Matematica).
-p
imprimanta adauga sau modifica parametrii unei imprimante.
-Pfisier specifica
un nume de fisier ppd care
contine driverul de
imprimanta. -x imprimanta sterge imprimanta specificata.
De exemplu, pentru adaugarea unei imprimante HP DeskJet, conectata la primul port paralel al calculatorului, se apeleaza comanda:
| Ipadmin -p DeskJet -E -v parallel:/dev/lpO -m deskjet.ppd ENTER
Pentru pornirea si oprirea cozilor de imprimare se utilizeaza comenzile:
l enable imprimanta ENTER
disable imprimanta ENTER Pentru acceptarea sau refuzarea de cereri se utilizeaza comenzile:
I |
accept imprimanta ENTER reject imprimanta ENTER
Fisierele de configurare CUPS se gasesc în directorul /etc/cups, dupa cum urmeaza:
ciasses. conf contine informatiile despre clasele de imprimante
client. conf contine numele serverului implicit
cupsd. conf contine configurarile serverului CUPS
printers. conf contine informatiile despre imprimantele configurate.
Ne vom referi în continuare la fisierul /etc/cups/cupsd.conf. Acesta recunoaste urmatoarele directive:
AccessLog nume
Stabileste fisierul-jurnal. Poate fi utilizata si valoarea sysiog, pentru a utiliza serviciul sysiog pentru jurnalizare. Implicit: /var/log/cups/access_log.
Allow front adresa
Specifica masina sau reteaua de pe care pot fi accesate serviciile serverului. Poate fi o adresa IP, nume de masina, o adresa de forma adresa/masca_de_retea, sau AII pentru orice adresa, None pentru nici o adresa. Pot fi utilizate si caractere wildcard. De asemenea, pot fi prezente multiple
Setari avansate ale sistemului
asemenea declaratii. Se utilizeaza în cadrul unei directive Location (vezi infrd). AuthClass clasa
Stabileste nivelul de autentificare astfel (se foloseste în cadrul directivelor Location):
Anonymous: nu este necesara autentificare (implicit);
User: autentificarea se face pe baza numelui de utilizator si
parolei;
System: autentificarea se face pe baza numelui de utilizator
si parolei, iar utilizatorul trebuie sa apartina grupului sys.
Grupul poate fi schimbat prin intermediul directivei
SystemGroup;
Group: autentificarea se face pe baza numelui de utilizator
si parolei, iar utilizatorul trebuie sa apartina unui anumit
grup, specificat prin directiva AitthGroupName. AuthGroupName grup
Stabileste grupul utilizat de directiva AuthClass. AuthType tip
Defineste tipul autentificarii în cadrul directivei Location:
None: nu se realizeaza autentificare (implicit);
sistemul |
Basic: autentificarea se face utilizând
UNIX/Linux de parole;
se face utilizând fisierul |
Digest: autentificarea
/etc/cups/passwd.md5. DadaDir director
Specifica directorul pentru fisierele de date. Implicit: /usr/share/cups. DefaultCharset set_de_caractere
una din Implicit: |
Stabileste setul de caractere implicit. Poate lua
Valorile: utf-8, iso-8859-1 sau windows-1251. utf-8.
DefaultLanguage limbaj
Stabileste limba implicita. Poate luna una dintre valorile: de,
en, es, fr, it. Implicit: en. Denyfrom adresa
Specifica masina sau adresa IP pentru care vor fi refuzate
cererile. Similar cu Allowfrom. Trebuie sa apartina directivei
Location.
Stabileste modul de criptare în cadrul unei directive Location. Poate lua una dintre valorile: Never: nu se efectueaza criptarea datelor; |
Encryption tip
Administrarea si configurarea sistemelor Linux
IfRequested: efectuaza criptare numai daca este solicitata
(implicit);
Always: efectueaza criptare.
ErrorLog fisier
Stabileste fisierul-jurnal pentru erori. Poate fi utilizata si valoarea syslog, pentru a utiliza serviciul syslog pentru jurnalizare. Implicit: /var/log/cups/error_log.
FontPath lista_directoare
Specifica lista de directoare în care se afla fonturi, separate prin caracterul ":". Implicit: /usr/share/cups/fonts.
HostNameLookups tip
Activeaza/dezactiveaza verificarea numelui masinii de pe care se face conectarea (adica daca numele este real). Poate lua valoarea On sau of f. Implicit: of f.
Locatlon
Specifica optiunile de autentificare pentru o anumita resursa, astfel:
<Location /resursa> </Location>
LogLevel nivel
unde resursa este o specificatie de tip URI (descrisa la
începutul sectiunii) sau una din urmatoarele locatii
virtuale:
/admin: toate operatiunile de administrare
/classes: toate clasele de imprimante
/classes/clasa: clasa specificata
/jobs: toate sarcinile de tiparire
/jobs/id: sarcina id
/printers: toate imprimantele
/printers/imprimanta: imprimanta imprimanta.
Stabileste nivelul de jurnalizare: none: nici un mesaj;
emerg: jurnalizeaza situatiile critice care împiedica serverul sa functioneze;
alert: jurnalizeaza alertele care trebuie tratate imediat; crit: jurnalizeaza erorile critice care nu împiedica functionarea serverului; . error: jurnalizeaza erorile; warn: jurnalizeaza atentionarile; notice: jurnalizeaza situatiile de eroare temporare;
Setari avansate ale sistemului
info: jurnalizeaza toate cererile si schimbarile de stare
(implicit);
debug: jurnalizeaza informatiile de depanare de baza;
debug2: jurnalizeaza toate informatiile de depanare.
MaxClients nr_clienti
Stabileste numarul maxim de clienti simultani acceptati de server. Implicit: io.
MaxJobs nr_sarcini
Stabileste numarul maxim de sarcini ce se pot afla în coada de tiparire. Implicit este o, adica numar nelimitat de sarcini.
MaxRequestSize dimensiune
Specifica dimensiunea maxima a fisierului de tiparit. Valoarea implicita este o, adica dimensiune nelimitata.
Port port
Specifica portul pe care serverul cups va astepta cereri. Pot fi prezente mai multe directive Port. Implicit: 631.
RunAsUser
Stabileste daca serverul va rula sub un utilizator special (de obicei lp), pentru valoarea Yes, sau sub root, pentru valoarea no. Implicit este no. De remarcat ca daca serverul ruleaza sub lp, acesta trebuie sa aiba drept de acces Ia dispozitivele corespunzatoare imprimantei.
TempDir director
Stabileste directorul folosit pentru fisiere temporare. Implicit: /var/tmp.
User utilizator
Stabileste utilizatorul special sub care sunt executate filtrele. Implicit: lp.
Pentru a exporta imprimantele CUPS catre clienti Windows, a se vedea sistemul Samba (cap. 5).
Pentru a configura CUPS în vederea tiparirii pe imprimante legate la masini Windows, se lanseaza mai întâi comanda:
| In -s 'which smbspool' /usr/lib/cups/backend/smb ENTER
Pentru configurare, se folosesc urmatoarele nume de resursa:
smb: //workgroup/server/imprimanta
smb://server/imprimanta
smb://utilizator:parola@workgroup/server/imprimanta
smb://utilizator:parola@server/imprimanta
|