(M)  s i s t e m a   o p e r a c i o n a l   m a g n u x   l i n u x ~/ · documentação · suporte · sobre

  Next Previous Contents

8. Compartilhando uma impressora Linux com máquinas Windows

Para compartilhar uma impressora Linux com máquinas Windows, você precisa ter certeza que sua impressora está configurada no Linux. Se você pode imprimir do Linux, configurar um compartilhamento SMB da impressora é bem simples.

Veja o Printing HOWTO para configurar uma impressora local.

Já que o autor usou uma impressora conectada a uma máquina Windows NT (há muito tempo atrás - antes de converter nossa rede ao Linux, quase em sua totalidade), esta seção não deve ser vista como definitiva, mas meramente uma sugestão. Qualquer um com detalhes a compartilhar, por favor, envie-os a dwood@plugged.net.au Assim, esta seção pode ser completada.

Adicionando configurações de impressão a seu sbm.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

Tenha certeza que a o caminho da impressora (neste caso abaixo de [ljet]) casa com o diretório de spool em /etc/printcap!

As linhas:


   printcap name = /etc/printcap
   load printers = yes

controlam quando todas as impressoras em /etc/printcap devem ser cerregadas por padrão ou não. Se você fizer isso, não há razão para configurar impressoras individualmente. A seção [printers] escifica opções para as impressoras que você quer definir explicitamente. Se o subsistema de impressão que você está usando não funciona deste modo (BSD), você terá que configurar um arquivo printcap falso (ou usar a técnica do 'comando de impressão', veja abaixo). Para mais informações sobre o sistema printcap veja o Printing HOWTO.

Uma técnica útil de testar a conexão de rede é trocar o camando de impressão para:


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

O arquivo resultante pode então ser analisado.

Observação: Há alguns problemas ao se compartilhar impressoras em máquinas UNIX com máquinas NT usando Samba. Um dos problemas é o NT ver a impressora compartilhada corretamente. Para solucionar, use as observações contidas na documentação do Samba no arquivo docs/WinNT.txt. Outro problema ocorre com as senhas. Veja os comentários no mesmo arquivo sobre uma forma irritante de compreensão e falha para solucionar o problema.

Oleg L. Machulskiy ( machulsk@shade.msu.ru) sugere que um comando de impressão melhor para o exemplo acima seria:


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

onde 'smb2ps' é um script que transforma os arquivos de spool recebidos do Windows em usáveis e comuns arquivos Postscript. Ele deve cortar as primeiras três e as últimas duas linhas, porque estas linhas contém código PJL ou PCL.

Este método só é necessário se sua máquina Windows está imprimindo PCL e não Postscript realmente. Eu tenho visto que no Windows 95/98/NT não tem um driver genérico para Postscript, mas o driver da "Digital turbo Printserver 20" funciona como um bom driver genérico de Postscript para a maioria das configurações. Eu também tenho ouvido que o driver da "Apple LaserWriter II NTX" também funciona para este fim.

Jeff Stern ( jstern@eclectic.ss.uci.edu) reporta o seguinte, o que pode ajudar alguns de vocês:

--------------------------%<---------------------------------- O problema que eu estava tendo, era que eu podia imprimir via lpd/lpr na minha impressora do Linux. Mas, eu não conseguia imprimir de uma máquina Win95 remota. Então eu tentei:

smbclient \\eclectic\belen -P

e então:

print myfile

Eu obtive erros como acesso negado. Então, eu configurei as permissões em meu diretório /var/spool/lpd/lp1 para 777. Me desculpe, mas foi isso que eu tive que fazer. Eu acho que alternativamente, eu poderia ter posto todos os usuários no grupo 'lp', ou feito dado a posse do diretório ao grupo 'users', etc... Mas por enquanto, este método está funcionando (com propriedade root:lp).

Finalmente, uma outra coisa que os administradores devem saber é que o nome da conta na máquina Windows (na qual eu estava tentando usar a impressora Linux via Samba) deve ter equivalente no Linux. Assim, se há um usuário chamado 'joe' na máquina Windows 'mywinbox' tentando imprimir na impressora 'belen' da máquina Linux 'eclectic' (\\eclecticz\belen, deverá haver um usuário chamado 'joe' na máquina Linux. Então o login e a senha do usuário 'joe' serão a senha para acesar a impressora belen da máquina eclectic. Esta senha será solicitada na máquina Windows quando você estiver configurando a impressora com Impressoras | Adicionar Nova.

Eu pensei que este tipo de problema não seria bem o caso, mas eu configurei minha impressora com acesso público no smb.conf. Mas aparentemente, ela continua a pedir senha. (A máquina Windows, infelizmente, não lhe dá a oportunidade de informar um nome de usuário diferente para a impressora remota (Linux). Ela simplesmente usa o nome do usuário atual que você informou quando iniciou o Win95. --------------------------%<----------------------------------

O Dr. Michael Langner langner@fiz-chemie.de mostra que problemas de permissão de escrita na árvore de /var/spool/lpd/ podem ser evitados por alguma coisa como "path = /tmp" e "print command = lpr -r -P%p %s".

Algumas vezes, um error de interpretação do Postscript irá ocorrer quando você estiver imprimindo de máquinas Windows, o que causa a impressão de uma página extra no fim de cada trabalho de impressão. A útima página sempre conterá "%%[ Lastpage ]%%" em seu topo. Aparentemente isto acontece apenas com o Windows 95 e 98 e é devido a um defeito no Postscript gerado.

Uma maneira de lidar com isso é usar um script que remove a pequena parte ruim desde Postscript dos trabalhos da fila de impressão. Outra maneira é tentar encontrar um driver Postscript melhor para Windows. Provavelmente a melhor maneira é usarmos LPRng invés de Postscript para imprimir num servidor Samba.

Erik Ratcliffe ( erik@caldera.com) da Caldera contou-me que usando LPRng significa que qualquer driver de impressão pode ser usado na máquina Windows. No servidor Samba, ele usou uma entrada no /etc/printcap que se parece com esta:


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

LPRng não requer :\ no final de cada linha. Uma linha de impressora ainda precisa ser adicionada ao /etc/smb.conf para a impressora física. O comando de impressão precisa usar a entrada "raw" do /etc/printcap e os dados precisam ser enviados para a impressora em formato binário. Tente um comando de impressão como este:


print command = lpr -b -Praw %s

Você também pode precisar configurar o spooling no Windows 95 para imprimir diretamente para a impressora, ao invés de fazer spool.


Next Previous Contents