Printar erro no log durante o shell script [RESOLVIDO]

1. Printar erro no log durante o shell script [RESOLVIDO]

Paulo Seze
plegiao

(usa CentOS)

Enviado em 02/12/2014 - 13:49h

Srs(as), tenho aqui na empresa vários shell script e backup. Todos eles rodam direito e me mostram se o backup deu certo ou não. Porém se algum script por algum motivo não chega ao fim, eu não sei qual o erro que ocasionou a parada do shell.
Ao olhar no log ele me mostra que onde parou mas não me mostra a tela de erro. Existe uma maneira de "printar" esse erro gerado pelo linux e colá-lo no log?
Desde já agradeço


  


2. Re: Printar erro no log durante o shell script [RESOLVIDO]

Ton Melo
IZhaq_melo

(usa FreeBSD)

Enviado em 02/12/2014 - 15:57h

plegiao escreveu:

Srs(as), tenho aqui na empresa vários shell script e backup. Todos eles rodam direito e me mostram se o backup deu certo ou não. Porém se algum script por algum motivo não chega ao fim, eu não sei qual o erro que ocasionou a parada do shell.
Ao olhar no log ele me mostra que onde parou mas não me mostra a tela de erro. Existe uma maneira de "printar" esse erro gerado pelo linux e colá-lo no log?
Desde já agradeço


ola, da pra você fazer de várias formas:

mas eu sei de duas...

a primeiro é imprimir tudo e mandar tudo para um arquivo de log:

o comando tee, ele direciona o resultado para a tela e também para um arquivo se for o caso.



ls
#lista arquivos do diretório atual


ls >> arquivo.txt
#lista os arquivos de um direciona a saída padrão para um arquivo.txt

ls | tee arquivo.txt
#lista os arquivos do diretório na saída padrão e também direciona eles pra um arquivo.txt


a outra forma é usar o 'redirecionamento':

stdin, stderr, stdout.






3. Re: Printar erro no log durante o shell script [RESOLVIDO]

Thiago Henrique Hüpner
Thihup

(usa Manjaro Linux)

Enviado em 02/12/2014 - 19:04h

Faça algo assim :

Depois do #!/bin/bash


function imprimeErro(){


# Se estiver ocorrido erro
if [ $1 == 0 ]; then
# imprima erro e saia do programa
echo "ERRO !!!!!"
exit 1

fi

}



Dai faça assim :


ls # Aqui é o comando
imprimeErro $? # Aqui ele chama a funcao imprimeErro


Apenas troque o 'ls' pelo comando a verificar e depois chame a funcao

Se não tiver entendido , publique suas duvidas

Espero ter ajudado

[]'s

T+


4. Testando

Paulo Seze
plegiao

(usa CentOS)

Enviado em 03/12/2014 - 10:42h

Bom dia! Obrigado pelos posts, estou estudando o comando tee e testando o comando do thihup, porém não entendi muito bem o comando.


5. Comando TEE

Paulo Seze
plegiao

(usa CentOS)

Enviado em 03/12/2014 - 11:20h

Alterei o script de backup para dar erro e usei o comando tee dessa forma:
./autobackup | tee erro.txt
Ocorreram vários erros, porém o erro.txt saiu vazio.


6. Re: Printar erro no log durante o shell script [RESOLVIDO]

Thiago Henrique Hüpner
Thihup

(usa Manjaro Linux)

Enviado em 03/12/2014 - 11:38h

Thihup escreveu:

Faça algo assim :

Depois do #!/bin/bash


function imprimeErro(){


# Se estiver ocorrido erro
if [ $1 != 0 ]; then
# imprima erro e saia do programa
echo "ERRO !!!!!"
exit 1

fi

}



Dai faça assim :


ls # Aqui é o comando
imprimeErro $? # Aqui ele chama a funcao imprimeErro


Apenas troque o 'ls' pelo comando a verificar e depois chame a funcao

Se não tiver entendido , publique suas duvidas

Espero ter ajudado

[]'s

T+



Bom , o que nao entendeu dos comandos ?


function imprimeErro(){


# Se estiver ocorrido erro
if [ $1 != 0 ]; then
# imprima erro e saia do programa
echo "ERRO !!!!!"
exit 1

fi

}



Nesta parte , nao e feito nada de mais , mas vou explicar , quando criamos uma funcao e chamamos ela , os argumentos passados ficam nessa ordem ($1,$2 , ...) , e se o argumento passado for diferente de 0 (0 eh quando ocorreu tudo bem) , ele mostra erro e sai do programa.


ls # Aqui é o comando
imprimeErro $? # Aqui ele chama a funcao imprimeErro


O `ls` eh o comando , e o $? , eh a var responsavel por detectar a saida do codigo (0,1)(0 , eh ok , diferente de 0 , nao ok)

E apos isso , ele chama a funcao imprimeErro com o argumento sendo a var de saida

Quaisquer duvidas so perguntar

[]`s

T+



  



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts