réplicas de relógios rolex
rispost

Printer Server Linux sem complicação – Paralela/USB

novembro 26th, 2008

Amigos, depois de “campear” a Internet atrás de uma solução que matasse a charada de compartilhar uma impressora em um box ou servidor Linux, que já cumpre outras tarefas numa rede (FileServer, Firewall, dbServer..), achei algumas soluções e acabei escrevendo este post para facilitar a vida de quem está iniciando nessa área.

Na verdade, a maioria dos tutoriais que se acha pela rede, descreve como fazer um servidor de impressão para máquinas Windows, utilizando o SaMBa e o cups, porém estes são relativamente difíceis de entender o funcionamento para quem quer somente compartilhar uma impressora facilmente, e não quer estudar o funcionamento do samba e do cups, apesar destes serem servidores de arquivos e impressão altamente robustos (Substituem servidores Windows com vantagens!!).

A solução que apresento aqui nada mais é do que tornar uma máquina ou servidor Linux um Printer Server RAW do tipo HP Jetdirect ouvindo na porta 9100 padrão. Isso nos possibilita a impressão via rede de qualquer computador e de qualquer sistema operacional, sem dificuldade de sequer a instalação de driver no servidor, imprimindo diretamente no IP do Printer Server.

Entendendo a Solução (Usando CentOS 5.2)

O grande lance é que vamos utilizar o comando nc (acho que a evolução do comando netcat). Ele simplesmente fica ouvindo em uma determinada porta e repassa tudo que chegar para um device no linux. Device este que pode ser a /dev/lp0 (Saída paralela) ou a /dev/usb/lp0 (Saída USB).

Mão às Teclas

Primeiramente vamos testar a solução e depois criamos um script com um loop que ficará ouvindo na porta e repassando as informações em formato RAW para a porta da impressora. Ao plugar uma impressora paralela, o device já estará criado e não teremos problemas para o reconhecimento. Na conexão USB, teremos que certificar que o kernel achou corretamente o device. Meus testes foram feitos com uma impressora HP692C paralela e uma Lexmark E340 Laser USB em meu Firewall CentOS 5.2 PentiumIII 1.13 Tualatin.

Após plugar e ligar a impressora USB, o kernel irá responder. Verificamos isso com o comando dmesg

# dmesg

O resultado será extenso, porém bem nas últimas linhas teremos algo como:

usb 1-2: new full speed USB device using uhci_hcd and address 11
usb 1-2: configuration #1 chosen from 1 choice
drivers/usb/class/usblp.c: usblp0: USB Bidirectional printer dev 11 if 0 alt 0 proto 2 vid 0x043D pid 0x00C8

Isso informa que o kernel reconheceu o dispositivo como uma impressora e deverá criar automaticamente o device /dev/usb/lp0 com isso já podemos testar o printer server com o comando:

se USB:
# while true ; do nc -l 9100 > /dev/usb/lp0 ; done

Se paralela:
# while true ; do nc -l 9100 > /dev/lp0 ; done

Após digitar o comando referente à sua conexão, o prompt não voltará… Não se assuste, é que como é um loop, para liberar o prompt devemos enviá-lo para segundo plano. Isso será o script que passarei a seguir que irá fazer. Por enquanto, ele ficará assim até que se digite ctrl+c para cancelar.

Digite o comando acima para a sua conexão e abra uma nova console root. Com o nmap poderemos certificar que a porta está ouvindo:

# nmap ip do servidor

Deverá aparecer uma entrada assim: ” 9100/tcp open jetdirect ” Isso certifica que a porta está ouvindo, enquanto o ctrl+c não for pressionado naquela console que deixamos de lado.
Com isso já sabemos que o printer server está funcionando, agora temos que instalar a impressora na estação apontando para o IP do servidor na porta 9100 (padrão em novas portas TCP/IP do Windows).
Abra as impressoras do Windows e adicione uma nova porta TCP/IP com o IP do servidor e a porta 9100, após instale a sua impressora normalmente (Para o Windows informe que ela é local e selecione a porta TCP/IP que você criou antes!) instale os drivers do fabricante e pronto!! Essa impressora poderá até ser compartilhada no Windows mesmo, se vc preferir instalar nas outras estações sem aplicar os drivers.
No Ubuntu (gnome), vá em Sistema/Administração/Impressão, abrirá as impressoras, clique em Nova Impressora, selecione AppSocket/HP JetDirect, entre com IP do servidor e porta 9100 e rolex de replicas siga com a instalação normal de impressora no Ubuntu Linux. Ao final mande uma página de teste e veja o resultado!

Fazendo funcionar sozinho

Criei um script simples para que o printer server suba na inicialização do Linux. Crie um novo arquivo em algum lugar para ser o printer server:

# vi /etc/jetdirect.sh

Coloque o conteúdo do arquivo como segue:

#—————
#! /bin/bash
echo ” ”
echo “Startando o Printer Server JetDirect….”
echo ” ”
# while true ; do nc -l 9100 > /dev/lp0 ; done &
while true ; do nc -l 9100 > /dev/usb/lp0 ; done &
#—————

Se a sua impressora for paralela, descomente a linha do /dev/lp0 e comente a outra. Você também poderá ter várias impressoras, tanto paralela quanto USB utilizando uma porta para cada, tipo 9100 9101 9102… e assim por diante.

Torne ele executável:

# chmod +x /etc/jetdirect.sh

Edite o rc.local e coloque no final uma chamada para o seu script:

# vi /etc/rc.d/rc.local

Adicione ao final a linha

/etc/jetdirect.sh

Agora sempre que o Linux subir, ele carregará o script e ficará ouvindo na porta tcp que você especificou e seu printer server Linux estará funcional.
Era isso amigos. Se tiverem dúvidas, é só apresentar.

Abraço e até a próxima.

Linuxpoa

2 Comentários

  1. fe

    Comentário by edson — 17 de dezembro de 2009 @ 23:59

  2. Ola, sou de porto alegre tb, e conserto impressoras, estou usando o ubuntu e toda hora instalo impressoras. Tenho que enviar um comando pjl via terminal como código binário (no windows no cmd uso o copy/b e funciona) no linux até consegui envia o arquivo, mas ela vai como impressão pelo comando: lp -d Hewlett-Packard-HP-LaserJet-M2727nf-MFP-2 Ce.pjl. Saberia me informar se existe algum comando que envie o comando pjl via binário para o equipamento? valeu

    Comentário by Fabiano — 12 de março de 2010 @ 9:45

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.

© Linuxpoa Home's Place , Designed by Stealth Settings
Entries (RSS) and Comments (RSS)