r14 05 (28)


Rozdział 14.
Drukowanie przez sieć

W tym rozdziale:

Niniejszy rozdział omawia drukowanie w środowiskach uniksowych i linuksowych oraz w systemach Microsoftu. Zostały w nim opisane procedury drukowania w systemach operacyjnych Microsoftu i systemach Unix/Linux, konfiguracja drukarek na obu platformach, procedury konfiguracji serwera lpd oraz Microsoft Internet Printing Protocol.

Jedną z podstawowych zalet korzystania z TCP/IP jest zdolność do drukowania przez sieć, zarówno w systemach Windows, jak i z komputerów uniksowych i linuksowych. Z tego powodu bieżący rozdział omawia drukowanie na drukarkach lokalnych i sieciowych.

Wprowadzenie do drukowania

W biznesowym środowisku sieciowym drukowanie jest jedną z najczęściej wykonywanych codziennych czynności. Wysłanie zadania do wydrukowania nie wygląda na trudne, lecz konfigurowanie drukarki może sprawić kłopoty. Drukarki można ogólnie podzielić na dwie kategorie: lokalne i sieciowe. Drukarka lokalna jest przyłączona tylko do jednego komputera, wobec czego tylko użytkownik tego komputera może wydawać polecenia drukowania. Drukarki lokalne są przydatne dla użytkowników pracujących w domu przy komputerze osobistym. W przeciwieństwie do nich, drukarki sieciowe możemy najczęściej spotkać w dużych organizacjach, gdzie przydzielanie osobnej drukarki dla każdego pracownika byłoby nieopłacalne i niepraktyczne. W tym przypadku drukarka sieciowa może zostać skonfigurowana przy serwerze, gdzie wszyscy użytkownicy sieci będą mogli z niej korzystać. Wówczas użytkownicy serwera mogą wysyłać zadania do drukarki przyłączonej do serwera. Drukarki lokalne i sieciowe możemy przyłączać do komputerów używających zarówno systemów Linux, jak i Windows.

Drukowanie w środowisku linuksowym

Usługi drukowania są dostępne we wszystkich dystrybucjach Linuksa oferowanych przez różnych producentów, aczkolwiek pomiędzy poszczególnymi wersjami mogą występować drobne różnice. W tym podrozdziale Czytelnik dowie się, jak zarządzać zadaniami drukowania w jednej z najpopularniejszych wersji systemu operacyjnego Linux — dystrybucjiRed Hat. Red Hat Linux zawiera szereg programów, plików i katalogów, pomagających w procesie drukowania.

W systemie Red Hat Linux użytkownicy mogą drukować pliki na centralnej drukarce. Można skonfigurować komputer linuksowy tak, by drukował na drukarce podłączonej do serwera linuksowego lub do serwera Windows NT/2000. W tym systemie za buforowanie w serwerze plików przeznaczonych do drukowania odpowiada program usługowy drukarki wierszowej — line printer daemon (lpd), który przyjmuje pliki od klientów i składuje je w serwerze, dopóki drukarka nie będzie gotowa do drukowania.

Program lpd musi być uruchomiony w systemie zawsze, gdy chcemy korzystać z usług drukowania. Możemy sprawdzić, czy lpd jest uruchomiony za pomocą polecenia statusu lpc z wiersza poleceń. Jeśli chcemy, by lpd uruchamiał się podczas uruchamiania systemu, możemy to skonfigurować za pomocą polecenia ntsysv.

0x01 graphic

Buforowanie drukowania (spooling) jest procesem, w którym demon drukowania zapisuje dokumenty na dysku, a następnie wysyła je do drukarki.

Aby zrozumieć dokładnie proces drukowania, Czytelnik musi poznać pojęcia związane ze składnikami usług drukowania w systemie Linux: plik urządzenia drukarki, buforowanie drukowania, kolejki wydruków oraz plik /etc/printcap. Składniki te zostaną omówione w poniższych podpunktach.

Plik urządzenia drukarki

Urządzenia są w systemie reprezentowane w postaci plików urządzeń (device file). Drukarki są urządzeniami działającymi w trybie znakowym i mieszczą się w katalogu /dev. Plik urządzenia drukarki reprezentuje drukarkę przyłączoną do portu równoległego (parallel line printer).

Pliki drukarek wyglądają następująco:

# ls -l /dev/lp*

crw-rw---- 1 root lp 6, 0 Aug 24 2000 /dev/lp0

crw-rw---- 1 root lp 6, 1 Aug 24 2000 /dev/lp1

crw-rw---- 1 root lp 6, 2 Aug 24 2000 /dev/lp2

0x01 graphic

Port oznacza interfejs, za pomocą którego można przyłączyć urządzenie sprzętowe do komputera. Port może być wewnętrzny lub zewnętrzny. Porty wewnętrzne służą do przyłączania takich urządzeń, jak dyski twarde. Porty zewnętrzne służą do przyłączania modemów, myszy, drukarek itp.

Buforowanie drukowania (spooling)

Angielski termin spool jest skrótem od Simultaneous Peripheral Operations On Line (równoczesne operacje na dołączonych urządzeniach peryferyjnych). Buforowanie drukowania jest procesem, w którym zadania drukowania są zapisywane na dysku w plikach zrozumiałych dla drukarki, a następnie wysyłane do wydrukowania. Buforowanie tymczasowo przydziela pamięć dla wydanego zadania drukowania. Jeśli więc drukarka jest zajęta, może ukończyć bieżące zadanie, a następnie rozpocząć kolejne. Procesem drukowania zajmuje się demon drukarki wierszowej (line printer daemon).

Kolejka do drukowania

Kolejka do drukowania (print queue) oznacza listę zadań wysłanych do drukarki w celu drukowania, lecz jeszcze nie wydrukowanych. Inaczej mówiąc, kolejka do drukowania składa się z zadań oczekujących w potoku do drukowania. Dokumenty znajdujące się w kolejce można przejrzeć za pomocą polecenia lpq.

Plik printcap

Wszystkie niezbędne informacje o skonfigurowanych drukarkach są obecne w pliku /etc/ printcap. Demon drukarki wierszowej używa tych informacji do zarządzania buforowaniem drukowania. Plik printcap zawiera również dane atrybutów — wymagane czcionki, marginesy, odstępy na papierze oraz protokół służący do komunikacji z drukarką.

Poniżej przedstawiony został przykładowy plik printcap:

# /etc/printcap
#
# Please don't edit this file directly unless you know what you are doing!
# Be warned that the control-panel printtool requires a very strict format!
# Look at the printcap(5) man page for more info.
#
# This file can be edited with the printtool in the control-panel.

##PRINTTOOL3## SMB

lp:\

:sd=/var/spool/lpd/lp:\

:mx#0:\

:sh:\

:af=/var/spool/lpd/lp/acct:\

:lp=/dev/null:\

:if=/usr/lib/rhs/rhs-printfilters//smbprint:

W tym przykładzie dodana została tylko jedna drukarka, podłączona do urządzenia SMB (Server Message Block). Tabela 14.1 objaśnia znaczenie wpisów w pliku.

Usługi drukowania korzystają z określonych plików systemowych, wymienionych w ta­beli 14.2.

Tabela 14.1. Wpisy w pliku printcap

Wpis

Znaczenie

:sd=/var/spool/lpd/lp:\

Położenie katalogu służącego do buforowania drukowania.

:mx#0:\

Maksymalny rozmiar pliku. Zero oznacza brak ograniczeń dla rozmiaru pliku.

:sh:\

Ten wpis oznacza, że drukarka nie powinna drukować nagłówków stron.

:af=/var/spool/lpd/lp/acct:\

Nazwa pliku ewidencyjnego.

:lp=/dev/null:\

Nazwa urządzenia.

:if=/usr/lib/rhs/
rhs-printfilters//smbprint:

Nazwa filtra wejściowego, który jest równocześnie odpowiedzialny za rozliczanie usługi.

Tabela 14.2. Pliki używane przez usługi drukowania w systemie Linux

Nazwa pliku

Opis

/etc/passwd

Ten plik służy do identyfikacji użytkownika w celu kontroli praw dostępu do drukarki.

/etc/printcap

Plik zawierający bazę danych możliwości drukarek (Printer Capability Database).

/usr/sbin/lpd

Demon (program usługowy) drukarki wierszowej.

/var/spool/lpd/*

Katalogi służące do buforowania drukowania.

/var/spool/lpd/*/cf*

Pliki sterujące demona lpd.

/var/spool/lpd/*/df*

Pliki danych wyszczególnione w plikach cf*.

/var/spool/lpd/*/tf*

Kopie tymczasowe plików cf*.

Drukowanie w systemach Microsoftu

Systemy operacyjne Microsoftu są powszechnie stosowane, wobec czego ważna jest znajomość sposobów zarządzania zadaniami drukowania w systemach Windows. Proces drukowania w komputerze Windows może być opisany w postaci następującej procedury:

  1. Użytkownik decyduje się wydrukować dokument.

  2. Użytkownik wysyła dokument do drukowania z systemu Windows albo z komputera nie używającego tego systemu operacyjnego. Jeśli zadanie drukowania uruchomione jest w systemie Windows, użytkownik wykorzystuje aplikację o nazwie GDI (Graphics Device Interface — interfejs urządzenia graficznego). GDI komunikuje się ze sterownikiem drukarki, skojarzonym z drukarką, do której zadanie drukowania ma zostać wysłane. Następnie GDI i sterownik wymieniają dane i przygotowują zadanie drukowania w języku drukarki. Drukarka interpretuje zadanie, które zostaje przesłane do programu buforującego po stronie klienta. Jeśli zadanie drukowania jest uruchomione w komputerze innym niż Windows, to GDI zostaje zastąpiony przez inny składnik, właściwy dla używanego systemu operacyjnego, który wykonuje niezbędne czynności. GDI jest używany tylko z systemami operacyjnymi Windows 2000.

  3. Klient przesyła zadanie do serwera drukowania. W przypadku klientów Windows 2000 i Windows NT, program buforujący po stronie klienta dokonuje połączenia RPC (Remote Procedure Call) z serwerem. RPC po stronie klienta za pomocą rutera łączy się ze zdalnym dostawcą usługi drukowania. Następnie zdalny dostawca usługi drukowania wysyła kolejne wywołanie RPC do programu buforującego serwera, który następnie odbiera przez sieć zadanie drukowania.

  4. Serwer drukowania identyfikuje zadania wysłane przez komputery Windows jako typ danych EMF (Enhanced Metafile). Zadania wysłane przez aplikacje z systemów innych niż Windows 2000 są w większości identyfikowane jako gotowe do drukowania — typ danych surowych (RAW). Ten typ danych nie pozwala zmieniać lub modyfikować zadania przed wydrukowaniem.

  5. Ruter serwera drukowania jest odpowiedzialny za przesłanie zadania drukowania do lokalnego dostawcy drukowania w serwerze. Następnie lokalny dostawca drukowania buforuje zadanie drukowania — inaczej mówiąc, zapisuje je na dysku.

  6. Procesor wydruku odbiera zadanie drukowania po zidentyfikowaniu typu danych w tym zadaniu i, w zależności od typu danych, dokonuje odpowiedniej konwersji.

  7. Jeśli podanie nazwy docelowej drukarki konfiguruje komputer kliencki, to usługa serwera drukowania decyduje, czy program buforujący serwera powinien zmienić zadanie drukowania, czy przydzielić do zadania inne dane. Zadanie drukowania jest następnie przekazywane do lokalnego dostawcy usług drukowania, a później zapisane na dysk.

  8. Sterowanie zadaniem drukowania zostaje przekazane do procesora strony rozdzielającej. Ten procesor dodaje na początek zadania stronę rozdzielającą, jeśli została zażądana.

  9. Zadanie zostaje przekazane z bufora do monitorów drukowania. W przypadku drukarek dwukierunkowych monitor języka zarządza dwustronną komunikacją pomiędzy nadawcą i drukarką. Zadanie zostaje przekazane do monitora portu. Jeśli drukarka nie jest dwukierunkowa, zadanie drukowania przechodzi bezpośrednio do monitora portu, który wysyła zadanie do docelowej drukarki.

  10. Po odebraniu zadania drukarka przetwarza każdą stronę do formatu grafiki rastrowej i drukuje ją.

Drukowanie z klienta

Komputery w większości organizacji należą do wewnętrznych sieci, które pozwalają użytkownikom udostępniać wzajemnie pliki i zasoby, a także korzystać z zasobów serwerów — na przykład z drukarek. W sieci klient-serwer użytkownicy łączący się z serwerami noszą nazwę klientów. Aby możliwe było drukowanie dokumentów, pomiędzy klientem i serwerem musi istnieć połączenie. Możliwych jest kilka konfiguracji połączenia: klient uniksowy lub linuksowy z serwerem uniksowym lub linuksowym, klient uniksowy lub linuksowy z serwerem Windows, klient Windows z serwerem uniksowym lub linuksowym oraz klient Windows z serwerem Windows.

Aby połączyć klienta Windows z serwerem Windows, potrzebny jest protokół SMB będący własnością Microsoftu. Mówiąc o drukowaniu przez TCP/IP, będziemy zawsze mieli na myśli lpr i lpd — usługi drukowania w środowisku TCP/IP.

Konfiguracja serwera lpd

W serwerach linuksowych możemy skonfigurować pięć typów drukarek; wybrany typ zależy od naszych wymagań. Wymagania te zależą od stosowanego systemu operacyjnego, od użytkowników sieci oraz od systemu operacyjnego serwera, w którym zamierzamy zainstalować drukarkę sieciową.

Zdalne drukarki w systemach Unix i Linux

Zanim zaczniemy korzystać z drukarki przyłączonej do zdalnego komputera uniksowego lub linuksowego, musimy podać następujące informacje: