Compartilhando impressora no Linux

O CUPS (Common Unix Printing System) é um software livre que permite que um computador aja como um servidor de impressão. O computador pode aceitar tarefas de impressão de computadores clientes, processá-las e enviá-las à impressora correta. Através dele também é possível monitorar impressões, relatar erros de impressões, visualizar relatórios sobre número de páginas impressas, data e horário da mesma.

O CUPS consiste de um spooler de impressão e escalonador, um sistema de filtragem que converte dados de impressão para um formato que a impressora entenderá, e um sistema em segundo-plano que envia estes dados ao dispositivo de impressão. O programa utiliza IPP (Internet Printing Protocol) para comunicação com os computadores clientes. Administradores de sistema podem configurar o driver de dispositivo que o CUPS fornece ao editar ficheiros de texto no formato PostScript Printer Description (PPD) da Adobe.

O programa é dividido em vários pacotes Debian:

  • cups - servidor de impressão central
  • cups-bsd - camada de compatibilidade que permite o uso de comandos a partir do daemon do sistema de impressão BSD tradicional (comandos lpd, lpr e lpq, etc.)
  • cups-client - contém um grupo de programas para interagir com o servidor (bloquear ou desbloquear uma impressora, ver ou apagar trabalhos de impressão em execução, etc.)
  • cups-driver-gutenprint - contém uma coleção de drivers de impressora adicionais para o cups

Pode ser instalado atráves do comando "apt-get install cups" e seu serviço iniciado/parado/reiniciado através do comando "/etc/init.d/cups start|stop|restart". Seu arquivo de log fica em "/var/log/cups" e possui interface gráfica de visualização de trabalhos e configuração através de navegador web - para isso, digite o endereço "http://localhost:631". Também é possível administrar o cups com a interface gráfica system-config-printer (a partir do pacote Debian de mesmo nome), o qual é instalado por padrão se a tarefa "ambiente Desktop" for escolhida.

Instalando servidor de impressão

(caminho suave) No computador que será o servidor de impressão, deve-se conectar o cabo USB e ligar a impressora. Então ir em "configurações do sistema" (junto do menu do usuário), abrir o utilitário "impressoras", clicar no botão "adicionar" e na impressora detectada pelo sistema. A tela seguinte possui informações que podem ser preenchidas. Concluída a instalação, clique no menu "servidor" e depois em "configurações". Marque a opção "Publicar impressoras compartilhadas conectadas a este sistema" dê OK. Também clique com o botão direito, vá em propriedades, políticas e deixe marcada a opção "Compartilhada".

(caminho pedregoso) Caso tenha muitas impressoras ou queira controlar melhor os computadores que podem acessá-la, será preciso instalar o CUPS:

$ sudo apt-get install cups hpijs

Além do cups, esse comando instala os drivers da HP (hpijs) - uma alternativa seria executar o comando "hp-setup" e usar as opções default em todas as telas. O HPIJS é um subcomponente do HPLIP, que fornece suporte básico de impressão para impressoras não-PostScript. HPIJS pode operar em qualquer ambiente spooler (incluindo sem spooler).

Durante uma impressão, caso dê algum erro do tipo "hplip.plugin-error", reinstale o plugin usando o seguinte comando:

$ sudo hp-plugin -g -i

Responder que deseja fazer o download (opção tecla "d").

O Foomatic é um sistema de impressão desenhado para facilitar a instalação de impressoras comuns, fornecendo a "cola/mecanismo" entre o spooler de impressão (Cups ou lpr) e a impressora propriamente dita. Por padrão, as novas distribuições já agregam o pacote foomatic na instalação do CUPS, mas caso precise instalá-lo separadamente, utilize o comando "apt-get install foomatic-gui foomatic-db".

O PPD tem a função de criar um método, ou seja, personalizar o comportamento padrão para um impressora específica, como por exemplo fontes, dispositivo de saída, orientação e tamanho. O sistema Foomatic é o responsável pela criação destes PPDs, mas ele pode ser adicionado manualmente ao adicionar a impressora pela interface gráfica (selecionar a opçao de fornecer o ppd para a impressora e usar o arquivo).

Algo que costuma dar problema é a conexão de outros computadores para usar esse servidor de impressão. Para isso, edite o arquivo "/etc/cups/cupsd.conf" para permitir o acesso dos computadores (ou redes) conforme o IP de cada um(a). Os trechos a seguir mostram a parte do arquivo a ser editada para acrescentar permissão de administrador (1ª parte) e para acessarem o CUPS via web, sem alterar o seu conteúdo:

<Location /admin>
  Order deny, allow
  Allow localhost
  Allow 192.168.1.10
  deny all
</Location>

<Location />
  Order deny, allow
  Allow localhost
  Allow 192.168.1.10
  deny all
</Location>

O resto pode deixar igual.

Instalando impressora no cliente

(caminho suave) Sabendo-se o nome da impressora na rede, entre no "adicionar impressora" do debian e selecioná-la. Depois, usar a opçao de fornecer o ppd para a impressora e selecionar o arquivo ".ppd".

(caminho pedregoso) Habilitada a permissão de acesso a outro computador (conforme realizado no item anterior), é possível realizar a instalação no cliente acessando o navegador e digitando o endereço "http://IP_DO_SERVIDOR:631". Então ir na aba "Administration", "ADD PRINTER" e escolher a opção desejada.

No Windows, clique em adicionar impressora e encontrar impressora na rede. No campo "buscar impressora compartilhada pelo nome", colocar o exemplo "http://IP_DO_SERVIDOR:631/printers/nome_da_impressora" (o link que aparece no cups) e dar OK (não clique em "procurar" se for preencher o campo). Depois abre uma janela de diálogo para escolher o driver pelo fabricante e modelo.

Impressão usando a linha de comando

O CUPS aceita os comandos lp (System V) ou lpr (Berkley) que funciona basicamente da seguinte forma para imprimir o "arquivo.txt":

$ lp arquivo.txt

Nesse link, existem mais opções para rotacionar, mudar o tamanho da folha, definir o número de cópias, etc. Caso apareça o erro "lp: Error - no default destination available", acesse o servidor, digite o comando "lpstat -a" para mostrar todas as impressoras instaladas e execute "lpoptions -d PRINTERNAME", onde PRINTERNAME é o nome da impressora escolhida na lista.

O script que segue usa o comando acima para enviar o arquivo para o diretório temporário do servidor e executa o comando de impressão remotamente. Para isso, copie e salve o script, salve-o como "print.sh" e habilite-o para execução (chmod +x). Execute-o como "./print.sh arquivo.txt", ou seja, o nome do arquivo a ser impresso é o argumento de entrada:

#!/bin/bash
## Script para imprimir arquivos remotamente

arquivo=$1
user='USUARIO'
host='NUMERO_DO_IP'
pass='SENHA'

echo "Imprimindo arquivo" $arquivo

# Substituir espaços por underline
echo $arquivo | rename 's/ /_/g'
arquivo=$(echo $arquivo | sed 's/ /_/g')

# Copiar arquivo remotamente
sshpass -p $pass scp "$arquivo" $user@$host:/tmp

# Executar comando remotamente para imprimir arquivo
sshpass -p $pass ssh $user@$host "lp /tmp/$arquivo"

Personalize com usuário, host e senha do servidor. Caso o arquivo tenha espaços no nome, ele será renomeado. Se o computador nunca fez um acesso ssh, precisará fazer um primeiro acesso "na mão" para o sshpass criar a chave de segurança.

Fontes

Compartilhe o link desse texto, mas se for copiar algum trecho, cite a fonte. Valorize nosso trabalho.
Mais informações na licença de uso do site.