Next Previous Contents

8. Достъп до принтер на Linux за Windows-машини

За организирането на достъп до Linux-принтер от Windows машина, на вас ви е необходимо да се убедите, че принтера работи под Linux. Ако вие можете да печатате под Linux то организацията за достъп до принтера, ще бъде много проста.

Погледнете Printing HOWTO за допълнителна информация за настройките за печатане.

Поради това, че автора ползва принтер включен към машина с Windows NT (това беше отдавна - до преработване на почити цялата мрежа под Linux), този раздел не трябва да се разглежда като завършен, а само като рекомендация. Този който има информация за организацията на такъв достъп, пращайте ми я на мене на адрес: [email protected], така, че този раздел може да бъде попълнен за в бъдеще.

Добавете настройката на принтера във вашия файл smb.conf:


[global]
   printing = bsd
   printcap name = /etc/printcap
   load printers = yes
   log file = /var/log/samba-log.%m
   lock directory = /var/lock/samba

[printers]
   comment = All Printers
   security = server
   path = /var/spool/lpd/lp
   browseable = no
   printable = yes
   public = yes
   writable = no
   create mode = 0700

[ljet]
   security = server
   path = /var/spool/lpd/lp
   printer name = lp
   writable = yes
   public = yes
   printable = yes
   print command = lpr -r -h -P %p %s

Убедете се, че пътя към принтера (в този случай за [ljet]) съответства на буферната директория посочена във файла /etc/printcap!

Редовете:


   printcap name = /etc/printcap
   load printers = yes

контролират дали са длъжни всички принтери, изброени в /etc/printcap по подразбиране да се зареждат. Ако вие направите това то няма причини за настройка на всеки принтер по отделно. Раздела [printers] посочва настрйките за принтерите, които вие искате да определите явно. Ако използваната от вас подсистема не работи по този начин (BSD), то тогава на вас ви е необходимо да настройте фалшив файл printcap (или използвайте 'print command', вижте по-долу). За допълнителна информация за системата printcap погледнете Printing-HOWTO.

Полезен похват за проврка на мрежовите съединения се явява изменението на командата за печат на:


   print command = cp %S /tmp/print.%P.%S

Изходния файл може да бъде анализиран.

ЗАБЕЛЕЖКА: Съществуват някои проблеми с достъпа до принтери на UNIX-машини за машини с Windows NT използвайки Samba. Един от проблемите е в това, че NT вижда неправилно мрежовия принтер. За решаването на този проблем вижте забележките във файла docs/WinNT.txt от дистрибутива на Samba. Другия проблем е свързан с проблема на паролата. Вижте коментария в същия файл.

Oleg L. Machulskiy ( [email protected]) предложи по-удобна за използване команда за печат, от колкото в горния пример:


print command = smb2ps %s | lpr -r -h -P %p

където 'smb2ps' се явява скрипт, който преобразува буферния файл, предаден от под Windows в обикновнно използван файл Postscript. Той трябва да премахва първите три и последните два реда, защото тези редове съдържат известни кодове PJL или PCL.

Такъв подход е нужен само, ако вашата машина с Windows печата PCL, а не истински Postscript. Аз установих, че Windows 95/98/NT нямат еднакъв драйвер за Postscript, но драйвера за принтера "Digital turbo Printserver 20" може да работи като хубав драйвер за Postscript в повечето случаи. Също така съм чувал, че за същите цели може да работи и драйвера "Apple LaserWriter II NTX".

Jeff Stern ( [email protected]) написа следното, което може да помогне на някои от вас:

--------------------------%<----------------------------------

Аз имах проблем, които се състоеше в следното, че аз можех да печатам използвайки lpd/lpr на моя принтер, включен към Linux, от самоата машина под Linux. Но аз не можех да печатам на този принтер от отдалечена машина под Win95. Когато пробвах да пусна

smbclient \\eclectic\belen -P

и след това се пробвах да изпълня

print myfile

аз получих съобщение за това, че достъпът ми е забранен. Аз сложих права на достъп на директорията /var/spool/lpd/lp1 равни на 777. Аз разбира се се извинявам, но го направих. Аз съшо така предполагам в качеството на алтернатива, че може да разположа всички регистрирани на машината с Linux в групата 'lp' или да дам на притежателите на директории група 'users' и т.н... Но сега това работи (с собственик root:lp).

И на края, друго нещо което трябва да знае администратора това е името на потребителя на машината с Windows (който се опитва да ползва принтера на Linux през Samba), което трябва да бъде също така наречено и на машината с Linux. По такъв начин, ако потребителя 'joe' на машина с Windows, наречена 'mywinbox' се пробва да печата на принтера 'belen' на машина с Linux 'electic' (\\electic\belen) също така трябва да бъде потребител 'joe' на машината с Linux. След това, паролата на 'joe' трябва да бъде паролата за достъп към принтера 'belen' на машината 'electic'. Тази парола ще бъде поискана при инсталирането на принтера на машината с Windows, използвайки помощника за добавяне на принтер.

Аз мисля, че това не е случайно, защото аз съм инсталирал моя принтер като 'public' в smb.conf. Но той все пак си иска парола. (Машините под Windows за съжаление не ви дават възможност да посочите друго име за отдалечения принтер (под Linux). Windows просто използва името на локалния потребител, което вие сте въвели когато сте пуснали Win95.

--------------------------%<----------------------------------

Dr. Michael Langner ( [email protected] посочи, че проблема с правата за достъп за запис в дървото с директории /var/spool/lpd/ може да бъде избегната с използването на нещо от рода на "path=/tmp" и "print command = lpr -r -P%p %s".

Понякога възниква грешка при разчитането на Postscript при печатане на Postscript от машината под Windows, което предизвиква печатането на излишни страници в края на всяко задание. Последната страница винаги ще съдържа съобщението "%%[ Lastpage ]%%" в заглавието. Като че ли това се случва само на машини с Windows 95 и 98 и това става заради това, че Posscript се явява лошо сформиран.

Един от начините на обработка на тази грешка --- използването на скрипт за остраняване на парчето лош Postscript от заданието за печат. Друг начин се явява намирането на най-добрия драйвер Postscript за Windows. Вероятно най-добрия начин за нас това е да използваме LPRng вместо Postscript за печатане на сървър Samba.

Erik Ratcliffe ( [email protected]), Caldera, съобщи, че използването на LPRng означава, че всеки драйвер за принтера може да бъде използван от машините с Windows. В сървъра Samba, те използват записа в /etc/printcap, която изглежда примерно така:


raw:\
        :rw:sh:
        :lp=/dev/lp1
        :sd=/var/spool/lpd/raw
        :fx=flp

LPRng не изисква :\ в края на всеки ред. Записа за принтера все едно трябва е необходимо да се направи във файла /etc/smb.conf за физическия принтер. Реда с командата за печат е нужна за използването на записа "raw" от файла /etc/printcap и данните е нужно да бъдат пращани в двоична форма. Пробвайте ето такъв команден ред:


print command = lpr -b -Praw %s

Също така може да ви се наложи да сложите буферизация на печатането на Windows95 за печатане направо на принтера, вместо използване на буферизация на сървъра.


Next Previous Contents