Compartilhar Impressora - Ubuntu - dicas
1. Introdução
Esta página mostra como compartilhar uma impressora conectada a um PC rodando Ubuntu (Servidor de Impressão) tendo PCs Clientes tanto Ubuntu como XP. É assumido que o usuário já tenha a impressora funcionando OK no Servidor usando CUPS.
O método utilizado é baseado apenas no protocolo IPP (não é necessário o uso do SAMBA nem de nenhum outro protocolo adicional). O Servidor possui IP conhecido; o roteador deverá ser configurado para sempre fornecer o mesmo IP conhecido durante DHCP. Para facilitar, descrevo como fazê-lo para o roteador D-Link DI-614+
O PC Servidor possui duas configurações para a mesma impressora: uma local, que provavelmente você já deva ter configurado para impressão local, e uma outra com o driver tipo "raw" (cru em Português). A configuração de impressora do tipo "raw" facilita a recepção de impressão para as máquinas XP. O driver "raw" no servidor manda para a impressora os dados que recebe do cliente sem alterá-los sendo o cliente o responsável por fazer as conversões e formatações necessárias (Postscript etc).
2. Servidor com IP conhecido
Chamo aqui de "IP conhecido" uma máquina que possui sempre o mesmo endereço IP; para todos os efeitos o IP conhecido se comporta igual ao IP estático. No entanto, apesar da máquina ser configurada para obter um IP dinâmico, o roteador sempre fornece um IP fixo (pré-estabelecido) durante a inicialização da máquina na rede.
Tendo o servidor com IP conhecido facilita as coisas (ex: DNS na LAN não é necessário). A grande maioria dos roteadores podem fornecer um IP conhecido mesmo tendo máquinas programadas para IP Dinâmico. Durante a fase de negociação do IP dinâmico (protocolo DHCP) o roteador fornece o IP baseado no MAC (identificador único da placa Ethernet ou wireless 802.11). Portanto, segue aqui o procedimento para programar o roteador D-Link DI-614+ para fornecer IP conhecido para o servidor de impressora.
A primeira coisa é saber o número MAC do PC que irá ser o servidor de impressão. Abra um terminal (click Aplicações->Acessórios->Terminal) e dê o comando ifconfig:
mvaranda@mv-home-linux:~$ ifconfig
eth0 Encapsulamento do Link: Ethernet Endereço de HW 00:40:F4:25:ED:AD
inet end.: 192.168.0.199 Bcast:192.168.0.255 Masc:255.255.255.0
endereço inet6: fe80::240:f4ff:fe25:edad/64 Escopo:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Métrica:1
pacotes RX:6912 erros:0 descartados:0 excesso:0 quadro:0
Pacotes TX:1389 erros:0 descartados:0 excesso:0 portadora:0
colisões:0 txqueuelen:1000
RX bytes:1928860 (1.8 MiB) TX bytes:272540 (266.1 KiB)
IRQ:11 Endereço de E/S:0x4000
lo Encapsulamento do Link: Loopback Local
inet end.: 127.0.0.1 Masc:255.0.0.0
endereço inet6: ::1/128 Escopo:Máquina
UP LOOPBACK RUNNING MTU:16436 Métrica:1
pacotes RX:27174 erros:0 descartados:0 excesso:0 quadro:0
Pacotes TX:27174 erros:0 descartados:0 excesso:0 portadora:0
colisões:0 txqueuelen:0
RX bytes:10998642 (10.4 MiB) TX bytes:10998642 (10.4 MiB)
O número 00:40:F4:25:ED:AD é o "MAC" do adaptador eth0 conectado ao roteador. Note que o seu servidor poderá ter mais que um adaptador (ex: ath0, eth1...etc). Considere o número MAC do adaptador que é usado para se conectar com a router (voce pode ter uma conexão wireless em funcionamento e uma outra "wired" talvez desconectada).
Agora se conecte com o roteador D-Link DI-614+ usando o firefox (endereço http://192.169.0.1 ) e clique no botão "DHCP". Use os campos do "Static DHCP" para criar uma entrada na tabela. No exemplo abaixo foi preenchido os campos: Name: mv-home-linux (use o nome desejado para o seu host), IP 192.168.0.199 e o MAC 00:40:F4:25:ED:AD (use o MAC do seu servidor). Após clicar no "Apply" e os dados fornecidos aparecerão na tabela "Static DHCP Client List":
<screenshot do D-Link>
Após ter feito isso reinicialize o servidor para que o novo IP passe a ser válido (no caso do exemplo, 192.168.0.199). Abra novamente o Terminal e verifique o IP através do comando ifconfig. Aproveite e verifique se todas as máquinas "Clientes" conseguem "pingar" o Servidor. Para isso, abra um terminal nos clientes Ubuntu (janela cmd nos XPs) e dê o comando "ping 192.168.0.199" (ou o IP que voce escolheu para o seu servidor). Se estiver tudo OK dê um control-C para parar "o ping".
mvaranda@mv-home-linux:~$ ping 192.168.0.199 PING 192.168.0.199 (192.168.0.199) 56(84) bytes of data. 64 bytes from 192.168.0.100: icmp_seq=1 ttl=128 time=1.74 ms 64 bytes from 192.168.0.100: icmp_seq=2 ttl=128 time=1.69 ms 64 bytes from 192.168.0.100: icmp_seq=3 ttl=128 time=1.72 ms
Se voce nao obteve sucesso NÃO vá adiante.
3. Configurando o Servidor
No PC Servidor, abra arquivo "/etc/cups/cupsd.conf" com o editor gedit. Para tanto, use o comando no terminal:
sudo gedit /etc/cups/cupsd.conf
Altere para que fique de acordo com o seguinte exemplo:
DefaultCharset notused LogLevel info Printcap /var/run/cups/printcap User cupsys Group lpadmin RunAsUser No Port 631 Include cupsd-browsing.conf BrowseAddress @LOCAL SystemGroup lpadmin <Location /> Order Deny,Allow Deny From All Allow From 127.0.0.1 Allow From 192.168.0.* </Location> <Location /jobs> AuthType Basic AuthClass User </Location> <Location /admin> AuthType Basic AuthClass System Order Deny,Allow Deny From All Allow From 127.0.0.1 </Location>
A linha mais importante é:
- Allow From 192.168.0.*
Se o seu roteador tiver IPs numa outra faixa então mude esta linha de acordo. Salve o arquivo.
Agora é necessário criar uma configuração de impressora com driver "raw". Note que é assumido que voce já possue uma configuração local funcionando perfeitamente. Abra o configurador de impressão: (clique "Sistema->Administração->Imprimindo" ou "Sistema->Administração->Impressoras"). No exemplo abaixo a impressora "Stylus-CX3810" é a configuração local.
< screenshot de impressora local >
Vamos agora criar a configuração "raw" para os clientes. IMPORTANTE: PARECE QUE A INTERFACE GRÁFICA PARA ADICIONAR UMA NOVA IMPRESSORA NÃO FUNCIONA PARA ADICIONAR UM "RAW" DRIVER (bug ???). Desta forma abra o arquivo /etc/cups/printers.conf via Terminal:
sudo gedit /etc/cups/printers.conf
Copie a configuração da sua impressora local para criar uma segunda impressora:
# Printer configuration file for CUPS v1.2.0 # Written by cupsd on 2006-07-10 22:49 # # Aqui a sua impressora local que voce ja havia criado # <Printer Stylus-CX3810> Info Epson Printer on basement Location /usr/local/printerSpool DeviceURI usb://EPSON/Stylus%20CX3800 State Idle StateTime 1150247048 Accepting Yes Shared Yes JobSheets none none QuotaPeriod 0 PageLimit 0 KLimit 0 OpPolicy default ErrorPolicy stop-printer </Printer> # # aqui a copia feita para criar a impressora "raw". somente o nome foi alterado # para "impressoraCompartilhada" # <Printer impressoraCompartilhada> Info Epson Printer on basement Location /usr/local/printerSpool DeviceURI usb://EPSON/Stylus%20CX3800 State Idle StateTime 1150247048 Accepting Yes Shared Yes JobSheets none none QuotaPeriod 0 PageLimit 0 KLimit 0 OpPolicy default ErrorPolicy stop-printer </Printer>
Salve o arquivo e dê o comando:
sudo /etc/init.d/cupsys restart
Agora a impressora "impressoraCompartilhada" deverá estar visével na interface gráfica de configuração (clique Sistema->Administração->Imprimindo caso voce tenha fechado).
3. Configurando Cliente Ubuntu
Na numa maquina cliente Ubuntu abra o configurador de impressão: clique "Sistema->Administração->Imprimindo" (ou impressoras) e "Nova Impressora".
No passo 1 selecione: - "Impressora de Rede" e Impressora CUPS (IPP); - URI: ipp://192.168.0.199/printers/impressoraCompartilhada;
nota: Altere o IP segundo o que você adotou como IP conhecido; - Clique "avançar"; - Selecione "Fabricante" e "Modelo" apropriadamente. - Clique "Avançar"; . Mude nome para o que for mais conveniente sem usar espaços, por exemplo, Impressora_da_Rede; - Clique "Aplicar"; - Re-inicie (reboot) o PC Cliente (note que "sudo /etc/init.d/cupsys restart" apenas não torna a nova impressora visivel para algumas aplicações);
Abra qualquer aplicação e imprima algo
3. Configurando Cliente XP
Obtenha o driver original para XP da impressora desejada e instale-o na máquina XP. - Clique "Start->Printer and Fax", "Add a printer" e "Next" (desculpe... meu XP é inglês); - Selecione "A Network printer..." e tecle "Next"; - Selecione a opção "Connect to printer on the Internet or on a home office network"; - no URL entre: http://192.168.0.199:631/printers/impressoraCompartilhada
nota 1: que NAO é ipp aqui e sim http;
nota 2: Altere o IP segundo oque voce adotou como IP conhecido; - Clique "Next"; - Selecione a impressora: caso a impressora não esteja na lista então entre com "Have Disk" e navegue até o driver do fabricante (arquivo INF). - Selecione as próximas opções de preferência de acordo.
Abra alguma aplicação e imprima algo
4. Aviso: Bug ao deletar jobs de impressão
Se voce tentar deletar algum job de impressão via interface gráfica verá que os drivers não irão responder apropriadamente. Pior... o spooler ficará travado.
Use a interface http fo CUPS para deletar jobs de impressão (abra um browser com http://localhost:631 )
PORÉM... A ADMINISTRAÇÃO ESTARÁ DESABILITADA. Siga as instruções do link abaixo para obter previlégio necessário para administrar CUPS via http.
http://ubuntu.wordpress.com/2005/10/13/enabling-cupsys-web-admin-interface/
Em resumo (copia do link):
Select “System”->”Administration”->”Users and Groups” from the main menu on your desktop. Select “Show all users” and/or “Show all groups”. Add the user “cupsys” to the group “shadow” in the “groups” tab.
Restart cupsys by issuing the command: $sudo /etc/init.d/cupsys restart
Créditos
Autor: Marcelo Varanda |
Data: 14/08/2006 |
