Filtrando trabalhos de impressão...

Publicado por Marcelo de Souza Sant´Anna 27/03/2005

[ Hits: 4.524 ]

Homepage: http://paginas.terra.com.br/informatica/marcelosantanna

Download prnfltprinter1




Este script filtra os trabalhos de impressão entre o samba e o cups.
Lembre-se de colocar este script em /usr/bin
Instale o CUPS e configure uma impressora. Ex printer1
Instale o SAMBA e compartilhe esta, acrescentando estas linhas no smb.conf:

...
[printer1]
...
printer name = printer1
print command = echo "`date`*%p*%f*%J*%z*%c*%u*%m--%M" >> /tmp/smbprnprinter1; \
                    prnfltprinter1; \
                    lp -d %p %f; rm %f

  



Esconder código-fonte

#!/bin/bash

# Arquivo de log criado pelo samba, cujo conteudo e:
# DATA*IMPRESSORA*TRABALHO*TITULO*TAMANHO*PAGINAS*USUARIO*COMPUTADOR
#
# DATA - Contem a data atual, no momento do pedido de impressao
# IMPRESSORA - Contem o nome da impressora
# TRABALHO - Contem o nome do trabalho gerado pelo samba
# TITULO - Contem o nome do titulo do documento
# TAMANHO - Contem o tamanho, em Kilobytes, do documento
# PAGINAS - Contem o numero de paginas pedidas.(Dependendo do gerenciador)
# USUARIO - Contem o nome do usuario que esta fazendo o pedido a impressao
# COMPUTADOR - Contem o nome do computador, seguido do endereco IP, que esta solicitando a impressao.
#
# EXEMPLO:
#
#      Mon Oct 25 04:54:38 BRST 2004*printer1*smbprn.00002172.ZFpgbN*Evol*2945k*0*santanna*cir-santanna--192.168.0.10
#
#
INLOGTOT=/tmp/smbprnprinter1

# verifica se o arquivo existe
if [[ -e $INLOGTOT ]]
then
  # variavel TLINHAS recebe o total de linhas
  TLINHAS=$(wc -l $INLOGTOT | cut -d " " -f1)

  # cria um loop, o numero de vezes de acordo com a quantidade de linhas
  for LINHA in $(seq 1 $TLINHAS)
  do
    # recebe o conteudo de cada linha, uma por loop.
    CONTEUDOLINHA=$(head -n $LINHA $INLOGTOT | tail -n 1)

    # variavel TRABALHO recebe o nome do trabalho, do documento, gerado pelo samba
    TRABALHO=$(echo $CONTEUDOLINHA | cut -d "*" -f3)

    # variavel TITULO recebe o titulo do documento
    TITULO=$(echo $CONTEUDOLINHA | cut -d "*" -f4)

    # Todos os trabalhos que nao tiverem no titulo algumas destas palavras serao excluidos...
    if [[ $(echo $TITULO | egrep -i -v '(evol|seagate|report|viewer|preview|client)') ]]
       then  rm -f /var/spool/samba/$TRABALHO
    fi
  done
  rm -f $INLOGTOT
fi

Scripts recomendados

Procurando um padrão num arquivo

slackpigs - veja os pacotes que mais ocupam espaço no Slackware

Projeto Mg-Renders

computer_protector

LoadbalanceFAILOVER


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts