###########################
Script INICIADO em DATA HORA BRT 2011
###########################
Para extrair do log do cups o arquivo de impresso, o usuário que imprimiu e a impressora deve-se:
1) Configurar o /etc/cups/cupsd.conf com LogLeve Debug
2) As informações estão contidas no /var/log/cups/error_log
3)
for linha in `egrep -n D /var/log/cups/error_log | egrep -i "argv.3.=\"smbprn" | egrep -i -v "Java|https|http" | cut -d ":" -f 1`; do inicio=`expr $linha - 3`; fim=`expr $linha + 1` ; awk 'NR>='$inicio' && NR<='$fim' {print}' /var/log/cups/error_log ; done >> /PATHlog_completo``$DATA_ARQUIVO``.txt
Descrição: a variável linha recebe o nr da linha que contém a expressão argv?3?="smbprn. Esse número é utilizado para enviar para o comando awk que extrai do arquivo as linhas entre $linha -3 e $linha + 1 do arquivo /var/log/cups/error_log
O formato do arquivo gerado fica assim:
D [03/Oct/2011:09:11:02 -0300] [Job 221789] argv[0]="NOME DA IMPRESSORA"
D [03/Oct/2011:09:11:02 -0300] [Job 221789] argv[1]="NR DO JOB"
D [03/Oct/2011:09:11:02 -0300] [Job 221789] argv[2]="NOME DO USUÁRIO"
D [03/Oct/2011:09:11:02 -0300] [Job 221789] argv[3]="NOME DO ARQUIVO IMPRESSO"
D [03/Oct/2011:09:11:02 -0300] [Job 221789] argv[4]="1"
Pode-se também fazer um filtro usando o error_log e concatenando com o page_log. Esse script ganha em performance, pois é executado em duas etapas:
Esta primeira linha cria um arquivo intemediário extraindo as informações do error_log
cut -d ":" -f 1-5 /var/log/cups/error_log | egrep -i "argv.2.|argv.3.|Get-Jobs ipp:\/\/localhost\/printers" | egrep -i -v "Java|https|http" >> /PATH``$DATA_ARQUIVO``.txt
Esta segunda linha de comando concatena, pelo número do JOB, do arquivo page_log
com o error_log
for nrjob in `awk -F: '/argv.3./ {print $4}' /PATHlog_cups$DATA_ARQUIVO.txt | awk '{ print substr ($4, 0,6)}'`; do awk -F: '/'$nrjob'/ {print}' /var/log/cups/page_log |tr -d '\n' >> /PATH``$DATA_ARQUIVO``.txt; echo " DOC: " | tr -d '\n' >> /PATH``$DATA_ARQUIVO``.txt; awk -F: '/'$nrjob'/ && /smbprn/ {print}' /PATH``$DATA_ARQUIVO``.txt |awk '{print $6,$7,$8,$9, $10, $11, $12}' >> /PATHteste_cups``$DATA_ARQUIVO``.txt ; echo "###################################" >> /PATHteste_cups``$DATA_ARQUIVO``.txt; done
rm /PATHlog_cups``$DATA_ARQUIVO``.txt
O formato do arquivo fica assim:
NOME DA IMPRESSORA USUÁRIO JOB [DATA:HORA -0300] 1 1 - IP DA MÁQUINA DOC: NOME DO DOCUMENTO"
###################################
NOME DA IMPRESSORA USUÁRIO JOB [DATA:HORA -0300] 1 1 - IP DA MÁQUINA DOC: NOME DO DOCUMENTO"
###################################
NOME DA IMPRESSORA USUÁRIO JOB [DATA:HORA -0300] 1 1 - IP DA MÁQUINA DOC: NOME DO DOCUMENTO"
###################################
###########################
Script TERMINADO em DATA HORA BRT 2011
###########################
Este Script Gera arquivos de log por impressora
#!/bin/bash
DATA_ARQUIVO=`date +%d-%m-%Y`
echo "###########################" >> /path/log_``$IMPRESSORA``_``$DATA_ARQUIVO``.txt
echo "Script INICIADO em " `date` >> /path/log_``$IMPRESSORA``_``$DATA_ARQUIVO``.txt
echo "###########################" >> /path/log_``$IMPRESSORA``_``$DATA_ARQUIVO``.txt
Esta linha gera o arquivo intermediário
cut -d ":" -f 1-5 /var/log/cups/error_log | egrep -i "argv.0.|argv.1.|argv.2.|argv.3.|Get-Jobs ipp:\/\/localhost\/printers" | egrep -i -v "Java|https|http" >> /root/log_cups.txt
O restante do script extrai do arquivo intermediário as informações por impressora
for IMPRESSORA in `awk {print} impressora.txt`;
do for linha in `egrep -n D /root/log_cups.txt | egrep -i "argv.0.=\"$IMPRESSORA" | egrep -i -v "Java|https|http" | cut -d ":" -f 1`;
do fim=`expr $linha + 3` ;
awk 'NR>='$linha' && NR<='$fim' {print}' /root/log_cups.txt ;
done >> /root/log_``$IMPRESSORA``_``$DATA_ARQUIVO``.txt;
done
Esta linha deleta o arquivo intermediário e o resto é firula.
rm /root/log_cups.txt
echo "###########################" >> /root/log_``$IMPRESSORA``_``$DATA_ARQUIVO``.txt
echo "Script TERMINADO em " `date` >> /root/log_``$IMPRESSORA``_``$DATA_ARQUIVO``.txt
echo "###########################" >> /root/log_``$IMPRESSORA``_``$DATA_ARQUIVO``.txt
Nenhum comentário:
Postar um comentário