Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: conky
Por tatuiano
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha



Artigo

Impressão remota via WEB
Linux user
arnaldoestevao
05/01/2007
Para quem tem um aplicativo rodando em um servidor Apache, escrito em CGI/perl ou PHP, e deseja imprimir em uma impressora matricial remota de nota fiscal por exemplo, a solução que desenvolvi pode ser usada tanto em Linux quanto em Windows e é totalmente livre.
Por: Arnaldo Luiz Estevao
[ Hits: 16568 ]
Conceito: 7.5   2 voto(s)2 voto(s)2 voto(s)2 voto(s)2 voto(s) + quero dar nota ao artigo

Servidor de impressão

Faça isso no servidor web.

É importante considerar que a máquina cliente não precisa manter nenhuma porta aberta, enquanto que o servidor mantém escutando a porta 80, que normalmente já esta aberta e sendo ouvida pelo Apache. O sistema é capaz de atravessar firewalls e roteadores sem necessidade de estabelecer uma conexão ponto a ponto, assim eu posso colocar o servidor de impressão remota em qualquer máquina de uma sub-rede local atrás de um roteador de ADSL ou em IP fixo doméstico por exemplo.

Slackware 11.0:

1. Criando os diretórios necessários:

# mkdir /var/spool/webpserver
# chown nobody.nobody /var/spool/webpserver


Agora crie o arquivo webpserver.cgi no diretório /var/www/cgi-bin:

# vim /var/www/cgi-bin/webpserver.cgi

#!/usr/bin/perl

use CGI qw/:standard/;
print header;

$fila=param('fila');
$nfiles = 0 ;
$t0 = time ;
while ( ( $nfiles == 0 ) and (time - $t0 < 30) and  time >=  $t0 ) {
    @files = </var/spoll/webpserver/$fila/*> ;
    $nfiles = $#files + 1 ;
    sleep 1 ;
    }
while (</var/spoll/webpserver/$fila/*>){
   $file = $_;
   $txt=`cat $file`;
   print $txt ;
   system("rm $file") ;
}
No nosso exemplo vamos usar uma fila chamada notafiscal:

# mkdir /var/spool/webpserver/notafiscal
# chown nobody.nobody /var/spool/webpserver/notafiscal


Para imprimir um arquivo basta copiar para dentro da fila. Ex.:

# cp /etc/meuarquivo /var/spool/webpserver/notafiscal

Isso pode ser feito de dentro do PHP ou do script CGI gerando o arquivo com o conteúdo a ser impresso e depois copiando para o diretório da fila correspondente.

OBS: Como existe tanto o Apache como Perl para Windows, este esquema pode ser aplicado tanto em um servidor baseado em Linux como em Windows, entretanto não tenho nenhuma máquina servidora com Windows, não tenho como calcular as alterações necessárias no script webpserver.cgi, que provavelmente deverá ser somente a substituição da barra / pela barra \ com a inclusão de C: na frente.

Próxima página >>




Páginas do artigo
   1. Servidor de impressão
   2. webpserver.bat (cliente Windows)
   3. rc.webpserver (cliente Linux)

Outros artigos deste autor

Leitura recomendada
Nenhum artigo encontrado.

Comentários
[1] Comentário enviado por poleto em 06/01/2007 - 03:19h:

Caro,

Interessante o script.
Vou dar a minha pequena contribuição:

A penúltima linha do script Perl não roda no windows

system("rm $file") ;

Pois faz uma chamada a um comando de sistema para remover o arquivo, sendo que no windows não existe o comando 'rm', no mesmo o comando seria 'del'.

Essa foi a linha que vi de imediato, além das que você já citou.

Abraços,
Poleto

[2] Comentário enviado por jeffersondantas em 12/04/2007 - 18:28h:

BOM

[3] Comentário enviado por lipecys em 20/05/2008 - 19:42h:

Ótimo artigo, foi pro favoritos.


Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.