Drukowanie w Linux-ie: Jak poustawiać to wszystko - podstawy.
Następna strona
Poprzednia strona
Spis treści
7. Jak poustawiać to wszystko - podstawy.
7.1 Tradycyjna konfiguracja lpd.
Minimalne ustawienia objawiają się tym, że system może kolejkować
pliki i je drukować. Nie będzie zwracał uwagi na to, czy twoja
drukarka je zrozumie czy nie i przypuszczalnie nie pozwoli ci na
zrobienie atrakcyjnego wydruku. Jednak jest to pierwszy krok do
zrozumienia, więc czytaj dalej !
Ogólnie mówiąc, żeby dodać kolejkę dla drukarki musisz dodać
pozycję do /etc/printcap i utworzyć katalog do
kolejkowania w /var/spool/lpd/.
Pojedyncza pozycja w /etc/printcap wygląda tak:
# LOCAL djet500
lp|dj|deskjet:\
:sd=/var/spool/lpd/dj:\
:mx#0:\
:lp=/dev/lp0:\
:sh:
Definiuje ona drukarkę o nazwach lp, dj i deskjet, z
katalogiem kolejkowania /var/spool/lpd/dj/, bez limitu na
każdy wydruk, która drukuje na urządzeniu /dev/lp0 i która
nie ma strony tytułowej (z danymi o osobie, która drukowała itp.)
na początku wydruku.
Teraz poczytaj stronę w podręczniku systemowym na temat
printcap.
Powyższy przykład wygląda bardzo prosto, ale jest tam jeden kruczek
- drukarka będzie tak długo dobrze drukowała, dopóki będę wysyłał
pliki, które ona rozumie. Na przykład wysłanie na drukarkę zwykłego
unix-owego pliku tekstowego spowoduje, że na papierze pojawi się
coś takiego:
To jest pierwsza linia.
To jest druga linia.
To jest trzecia linia.
Wysłanie na tę drukarkę pliku w PostScripcie spowodowałoby
wydrukowanie pięknej listy poleceń PostScript z dodatkowym efektem
schodków :) - beż żadnego pożytecznego efektu.
Wynika z tego jasno, że czegoś tu jeszcze brakuje - i to jest
właśnie celem filtrowania. Ci, którzy czytali stronę podręcznika
systemowego o pliku "printcap" mogli zuważyć atrybuty kolejki -
if i of. if - czyli input filter - to właśnie to
czego potrzebujemy.
Jeśli napiszemy krótki skrypt o nazwie "filter", który doda przed
końcem linii znak CR (cariage return - powrót karetki), to efekt
schodów może być wyeliminowany. Tak więc musimy dodać do naszej
pozycji w /etc/printcap jeszcze jedną linię informującą o
istniejącym filtrze:
lp|dj|deskjet:\
:sd=/var/spool/lpd/dj:\
:mx#0:\
:lp=/dev/lp0:\
:if=/var/spool/lpd/dj/filter:\
:sh:
Przykładem prostego skryptu może być:
#!perl
# Powyższa linia tak na prawdę powinna zawierać pełną ścieżkę do perl-a
# Skrypt ten musi być wykonywalny: chmod 755 filter
while(<STDIN>){chop $_; print "$_\r\n";};
# Możesz też zakończyć znacznikiem "form feed": print "\f";
Jeśli zrobimy powyższe, to otrzymamy drukarkę, na którą będziemy
mogli wysyłać pliki tekstowe z Unix-a i otrzymamy sensowny
wydruk. (Tak, są 4 miliony lepszych sposobów na napisanie tego
skryptu, ale tylko kilka jest tak bardzo ilustracyjnych. Ty masz to
napisać bardziej wydajnie.)
Jedynym problemem jest to, że drukowanie plików tekstowych nie jest
takie znowu fajne - byłoby o wiele lepiej, jeśli moglibysmy
drukować pliki PostScriptowe czy graficzne. No... tak, byłoby i jest
to łatwe do zrobienia. Metoda jest rozszerzeniem tego co
zrobiliśmy, żeby się pozbyć schodków. Jeśli napiszesz program,
który może przyjmować różne formaty i tłumaczyć je na język
zrozumiały dla drukarki, to masz naprawdę dobry filtr.
Taki filtr nazywany jest filtrem magicznym. Nie męcz się nad
pisaniem własnego - o ile nie drukujesz jakichs cudów - na sieci
jest już pełno filtrów, które możesz śmiało używać.
7.2 Prawa dostępu do plików.
Ponieważ otrzymałem wiele próśb, załączam listę plików wraz z
prawami dostępu jakie mają one w moim systemie. Jest wiele lepszych
sposobów na zrobienie tego - idealnym sposobem jest używanie
programów tylko z atrybutami SGID, a nie robienie wszystkiego SUID
dla "root-a", ale mój system tak już miał i dla mnie to działa.
-r-sr-sr-x 1 root lp /usr/bin/lpr*
-r-sr-sr-x 1 root lp /usr/bin/lprm*
-rwxr--r-- 1 root root /usr/sbin/lpd*
-r-xr-sr-x 1 root lp /usr/sbin/lpc*
drwxrwxr-x 4 root lp /var/spool/lpd/
drwxr-xr-x 2 root lp /var/spool/lpd/lp/
W chwili obecnej lpd musi być uruchamiany z prawami "root-a",
ponieważ używa on numerów portów zastrzeżonych dla
systemu (poniżej 1024). Po tym jak już się podczepi pod ten port
powinien się zmienić na lp.lp, ale raczej tego nie robi...
Następna strona
Poprzednia strona
Spis treści
Wyszukiwarka
Podobne podstrony:
printing howto pl 5printing howto pl 4printing howto pl 6printing howto pl 12printing howto pl 10printing howto pl 8printing howto pl 9printing howto pl 14printing howto pl 3printing howto plprinting howto pl 1printing howto pl 15printing howto pl 13Printing HOWTO pl (2)Printing HOWTO plprinting howto pl 2printing howto pl 16printing howto pl 11printing usage howto pl 5więcej podobnych podstron