script com saida para arquivo de log

1. script com saida para arquivo de log

Felipe oliveira Gutierrez
lipe.82

(usa Ubuntu)

Enviado em 14/09/2012 - 17:14h

Oi pessoal,

tenho um script que gera várias saidas no console, ele executa vários comandos e programas.

Eu estou procurando um jeito de colocar toda a saída do console num arquivo log. Mas não queria a opção "./meuScrip >> log.txt". Também uso "./meuScript | tee log.txt". mas este esconde perguntas de confirmação dos programas (y|n).

Queria configurar o arquivo de log dentro do meu script.
Alguém tem uma solução para isto?

Obrigado
Felipe


  


2. Re: script com saida para arquivo de log

euteste da silva
foxbit3r

(usa Solaris)

Enviado em 14/09/2012 - 22:32h

Execute isso: exec 1> /tmp/relatorio.txt
Depois execute o seu script.


3. Re: script com saida para arquivo de log

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 15/09/2012 - 00:40h

Eu faço assim, coloque no inicio do script:


LOGFILE="/var/log/${0##*/}".log
# Habilita log copiando a saída padrão para o arquivo LOGFILE
exec 1> >(tee -a "$LOGFILE")
# faz o mesmo para a saída de ERROS
exec 2>&1
#
# aqui o resto do seu código
#



4. Re: script com saida para arquivo de log

Felipe oliveira Gutierrez
lipe.82

(usa Ubuntu)

Enviado em 17/09/2012 - 08:36h

Oi rai3mb, eu fiz como você disse e a saída deu um erro. Não estou conseguindo solucionar este erro. Você pode me dar uma dica?

#!/bin/sh

PATH=`pwd`
LOGFILE="$PATH/${0##*/}".log
echo $LOGFILE
# Habilita log copiando a saída padrão para o arquivo LOGFILE
exec 1> >(tee -a $LOGFILE)
# faz o mesmo para a saída de ERROS
exec 2>&1

# Script para consultar Jobs no arquivo client_state.xml
....

A saída foi:
csgrid@lasid-gt-mcc:~/boinc/BOINC$ ./consulta_jobs
/home/csgrid/boinc/BOINC/consulta_jobs.log
./consulta_jobs: 7: ./consulta_jobs: Syntax error: redirection unexpected

Eu tirei os parêntese da linha "exec 1> >(tee -a $LOGFILE)", também coloque entre crases, mas ainda não consegui descobrir qual o erro.
Obrigado
Felipe


5. Dica: como gerar log com script

Perfil removido
removido

(usa Nenhuma)

Enviado em 17/09/2012 - 11:12h

Amigo,

Para ativar logs para script utilizamos o comando logger.

Primeiro é preciso ajustar a facility do seu rsyslog para trabalhar com o log do seu script.

As principais facilitys são:

auth, authpriv, cron, daemon, ftp, kern, local0-7, lpr, mail, mark, news, syslog, user

Os níveis de severidade são:

emerg, alert, crit, err, warning, notice, info, debug

ATENÇÃO:

As facilitys definidas pelo usuário (administrador) são: local0, local1,... até local7.


Então vamos lá...

Primeiro precisamos criar o arquivo local0.log que vai receber os logs do script em /var/log/local0.log

# touch /var/log/messages local0.log

Ajuste o grupo para fins de manutenção de log.(pode ser diferente se não estiver usando um Debian 6 - Simplesmente deixe o dono.grupo igual do /var/log/messages que vai funcionar beleza)

# chgrp adm /var/log/local0.log

Ajuste as permissões

# chmod 0640 /var/log/local0.log

Pronto... O arquivo está criado...


Agora vamos incluir a facility em /etc/rsyslog.d/local0.conf...
O rsyslog.conf pode ser diferente se não estiver no Debian 6.
Neste caso procure o arquivo geral em /etc/rsyslog.conf e inclua
no fim dele.

Edite como:

-----------------------------------------------------------------
local0.* /var/log/local0.log
-----------------------------------------------------------------

Reinicie o rsyslog (pode ser diferente se não estiver no Debian 6. Se não souber reiniciar simplesmente reboot a maquina).

root@hal:/etc/rsyslog.d# service rsyslog restart
Stopping enhanced syslogd: rsyslogd.
Starting enhanced syslogd: rsyslogd.

Faça um teste na linha de comando

#logger -t $0 -p local0.warning -- "Log do meu Script..."

veja se gravou corretamente:

# cat /var/log/local0.log

Sep 17 11:01:06 HAL -bash: Log do meu Script

Se viu uma linha como acima então está tudo OK.

Se estiver juncionando agora é so incluir os comandos logger na lógica do seu script.

Por exemplo,
----------------------------------------------------------
#!/bin/bash

A="1"
[ $A == "1" ] && logger -t $0 -p local0.warning -- "A é igual a 1.";
-----------------------------------------------------------

Irá gerar o seguinte log:

Sep 17 11:03:33 HAL ./avisando.sh: A é igual a 1.

Todos esses passos foram feitos em um Debian 6, se utiliza uma distro diferente pode ser necessário fazer outras mudanças além das que eu citei. O que foge ao escopo da dica.... Mas em grande parte é isso que tem que fazer para trabalhar log em scripts..

Kyetoy










Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts