CUPS

From ICO wiki
Revision as of 22:04, 16 May 2011 by Krvask (talk | contribs)
Jump to navigationJump to search

Sel teemal kirjutab Kristjan Vask

Sissejuhatus

CUPS (eelnevalt tuntud kui Common Unix Printing System, kuid hetkel ilma ametliku nimeta) on printimise süsteem unix-laadsetele op süsteemidele. Cups võimaldab arvutil käituda kui print server. Arvuti mis jooksutab CUPSi on võimaline kätlema printimistöid klientarvutitelt, neid protsessima ning saatma need seejärel korrektsesse printerisse. CUPS koosneb print spoolerist ja ajastajast, filtersüsteemist mis konverteerib printimisandmed formaati mida printer mõistab ning backend süsteemist, mis saadab andmed edasi printerile. Cups kasutab Internet Printing Protocol-i (IPP) tööde ja järjekordade haldamiseks. CUPS on vaikimisi sees paljudes Linuxi distrodes.

Ülevaade

CUPSi abil on võimalik protsessida mitmeid erinevaid andmeformaate otse printserveril. Enne CUPSi oli raske leida standardiseeritud printerite haldamise süsteemi mis võimaldaks käsitleda laia valikut printereid kuna paljud printeritootjad kasutasid oma endi formaate. CUPS võimaldab driveri- ja printeritootjatel lihtsamini ehitate draivereid mis töötavad ka printserveril.

Tööde protsessimine toimub serveril, võimaldamaks lihtsamalt võrguprintimist seadistada. Kui installitud on ka Samba, siis on kasutajatel võimalik kasutada ka võrgus olevaid Windowsi arvutite taga olevaid printereid. Haldusega on võimalik tegeleda mitmete graafiliste vahendite abil või käsurealt.

Web interface näeb välja selline ning on lihtsasti kasutatav:

Paigaldamine

Ubuntu töölauaversioonidel (näiteks 10.10) on CUPS juba vaikimisi peal, serverile saab selle peale apt-get install cups käsuga.

Konfigureerimine

Kõige kiirem ja mõistlikum on kasutada konfigureerimiseks web interface-i mis asub aadressil http://localhost:631/, ligi pääseb tavalise brauseriga.

Selle näitejuhendi eesmärk on aga tutvustada cupsi seadistamist võimaldamaks võrguprintimist linuxi arvutite jaoks käsurealt. Printerile soovitan kindlasti määrata staatilise ip ning siin juhendis käsitletakse samuti staatilise ip-ga printerit. Konfimiseks tarvilikud juurkasutajaõigused. Juhendi täitmiseks on tarvilikud linuxi käsurea baasteadmised ning eeldab võrgunduse põhitõdede tundmist, juhend pole seega päris algaja jaoks.

Enne confima hakkamamist teeme backupi cupsi confifailist, kui midagi nihu läheb on hea lihtne taastada:

cp /etc/cups/cupsd.conf /etc/cups/cupsd.conf.backup

Kui backup tehtud siis võib avada faili cupsd.conf sobiva tekstiredaktoriga.

nano /etc/cups/cupsd.conf

1. asjana tuleks otsida üles selline rida :

#ServerName myhost.domain.com

Kui seda pole siis tuleb see lisada.

myhost.domain.com asemele tuleks panna printserveri hostname või staatiline ip aadress, näitena on kasutatud ip-d. Välja näeks see rida konfifailis sedasi:

ServerName 192.168.1.5

Järgmiseks tuleks lisada broadcast aadressi rida, kasutada tuleb võrgu broadcast aadressi, näites on aadress selline:

BrowseAddress 192.168.1.255

Viimasena tuleks otsida üles konfifailist sellised read:

<Location />
Order Deny,Allow
Deny From All
Allow From 127.0.0.1
</Location>

Lisa uus rida peale "Allow From 127.0.0.1" ja lisa sinna ip aadressite vahemik mis on kasutusel sinu võrgus. Välja näeks see näiteks sedasi:

<Location />
Order Deny,Allow
Deny From All
Allow From 127.0.0.1
Allow From 192.168.1.*
</Location>

Muudatuste jõustamiseks tuleks CUPS restartida, iga kord kui muuta cupsd.conf faili, tuleb selle jõustamiseks cups restartida.

/etc/init.d/cupsd restart

Tööjaamadel tuleks muuta faili /etc/cups/client.conf ning lisada sinna printserveri ip-ga rida, näiteks:

ServerName 192.168.1.5

Printeri lisamine serverile

Postscript driveriga printeri lisamine:

sudo /usr/sbin/lpadmin -p kontori_printer1 -E -v ipp://192.168.1.12 -m postscript.ppd.gz

printerinime võiks asendada sobilikuga ning ip printeri aadressiga ning driveri enda printerile sobivaga. Driverit tuleb hoida kaustas /usr/share/ppd või /usr/share/cups/model

Piirangute seadmine

CUPS has also basic page accounting and quota capabilities.

Every printed page is logged in the file /var/log/cups/page_log So one can everytime read out this file and determine who printed how many pages. The system is based on the CUPS filters. They simply analyse the PostScript data stream to determine the number of pages. And there fore it depends on the quality of the PostScript generated by the applications whether the pages get correctly counted. And if there is a paper jam, pages are already counted and do not get printed. Also Jobs which get rendered printer-ready on the client (Windows) will not get accounted correctly, as CUPS does not understand the proprietary language of the printer.

In addition, one can restrict the amount of pages (or kBytes) which a user is allowed to print in a certain time frame. Such restrictions can be applied to the print queues with the "lpadmin" command.

lpadmin -p printer1 -o job-quota-period=604800 -o job-k-limit=1024 lpadmin -p printer2 -o job-quota-period=604800 -o job-page-limit=100

The first command means that within the "job-quota-period" (time always given in seconds, in this example we have one week) users can only print a maximum of 1024 kBytes (= 1 MByte) of data on the printer "printer1". The second command restricts printing on "printer2" to 100 pages per week. One can also give both "job-k-limit" and "job-page-limit" to one queue. Then both limits apply so the printer rejects jobs when the user already reaches one of the limits, either the 1 MByte or the 100 pages.

This is a very simple quota system: Quotas cannot be given per-user, so a certain user's quota cannot be raised independent of the other users, for example if the user pays his pages or gets a more printing-intensive job. Also counting of the pages is not very sophisticated as it was already shown above.

So for more sophisticated accounting it is recommended to use add-on software which is specialized for this job. This software can limit printing per-user, can create bills for the users, use hardware page counting methods of laser printers, and even estimate the actual amount of toner or ink needed for a page sent to the printer by counting the pixels.

The most well-known and complete free software package for print accounting and quotas id PyKota:

http://www.librelogiciel.com/software/PyKota/