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 “sistema -> administração” (ou outro caminho, conforme sua interface gráfica) e clicar em “impressoras” – caso não apareça, será necessário instalar esse utilitário usando o comando “sudo apt-get install system-config-printer”. Então clique no botão “adicionar” e na impressora detectada pelo sistema. A tela seguinte possui informações que podem ser preenchidas para descrever a impressora. Concluída a instalação e voltando à primeira tela, 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:

Além do cups, esse comando instala os drivers da HP (hpijs ou printer-driver-hpijs). 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).

Caso ainda não resolva, instale o programa “apt-get install hplip-gui” e então execute o comando “hp-setup“. Então baixe o plugin (digite a letra “d” e dê enter) – caso dê o erro “error: Unable to recieve key from keyserver”, mesmo assim confirme a instalação (letra “y”). Depois basta aceitar os termos de licença de uso do plugin.

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

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:

O resto pode deixar igual.

Instalando impressora no cliente

(caminho suave) Sabendo-se o nome da impressora na rede, entre no “adicionar impressora” (ou Sistema -> Administração -> Configurações da impressora) do debian e selecioná-la na parte de impressoras em rede (se não aparecer nenhum menu sobre impressoras, instale o seguinte pacote: sudo apt-get install system-config-printer). Depois, use a opção de fornecer o ppd para a impressora e selecionar o arquivo “.ppd”, se necessário.

(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”:

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:

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.

EXTRA – Scanner de multifuncional

Um programa de digitalização leve e útil é o xsane. Caso seja HP, atualize/instale os PPDs através do comando da segunda linha:

Fontes