Como criar script para monitorar mensagens no syslog [RESOLVIDO]

13. Re: Como criar script para monitorar mensagens no syslog [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 18/10/2016 - 23:18h

moacir_79 escreveu:

Marcelo, o "BASH" aqui é o /bin/bash.
Eu estava chamando o script no formato sh reacende.sh, por isso acusava o erro.
Chamando como ./reacende.sh ele executa (fica correndo o "SYNC" e checando o log a cada minuto).
O teste da função CHECA_HORA também funcionou corretamente.
Nossa, com suas explicações, eu vi que tenho MUUUUUITO que aprender sobre shell script ainda...
Quando tentei executar ele em background com o comando ./reacende.sh & 2>&1 /dev/null, recebo a mensagem [1] 10880 -bash: /dev/null: Permissão negada, porém o script roda normalmente em background, porém inserindo suas mensagens na tela. Uma última dúvida de novato: na função CHECA_LOG do segundo script, os 3 "#" que aparecem não estão comentando estas linhas?

===========================================
Boa noite, Moacir.
Executando como:
sh reacende.sh, obviamente, ele usa o "sh", e o mesmo não tem as mesmas funções do "BASH".
Quanto ao comando ./reacende.sh & 2>&1 /dev/null, sinceramente desconheço, encontrei aqui no VOL.
Recomendo PESQUISAR sobre o assunto . . .
As linhas comentadas, estão erradas . . .
Alterei para testar no meu PC, e esqueci de voltar ao normal . . . .
Tinha até uma MENSAGEM . . . "EXTRA" . . . :)
echo -e "CHECA_LOG => $(date +%H:%M:%S)\n$MN"

Nossa, com suas explicações, eu vi que tenho MUUUUUITO que aprender . . .
A DICA é: LEIA MUITO . . . .
Recomendo, além do VIVA O LINUX o aurelio.net, foi lá que tive uma boa noção sobre REGEX e outras coisas . . . Em
aurelio.net/canivete É um resumo de alguns comandos, sempre consulto, fiz ate um SCRIPT dele . . . .
Meu "começo" no shell script, foi pegar um script pronto e entender cada linha, cada comando . . . .

TUDO ARRUMADO . . . .
OBS.: TEM DUAS VERSÕES DA "FUNÇãO SINC", ESCOLHA UMA e APAGUE a OUTRA . . .

#!/bin/bash

ARQ="/var/log/apcupsd.events"
MSG="Power is back. UPS running on mains."
NS="1"

CHECA_HORA() {
sleep $NS
[[ $(date +%H) =~ ^(1[89]|[02][0-3])$ ]] && SINC || { printf "\r CHECANDO => $(date +%H:%M:%S)";CHECA_HORA ; }
}

#COM MENSAGEM
SINC() {
while (( ((10#$(date +%S)))>01));do
printf "\r INI_SINC: $(date +%H:%M:%S:%3N)"
done
printf "\n FIM_SINC: $(date +%H:%M:%S:%3N)\n"
CHECA_LOG
}

#SEM MENSAGEM
SINC() {
while (( ((10#$(date +%S)))>01));do :
done
CHECA_LOG
}

CHECA_LOG() {
DH=$(date +"%Y-%m-%d %H:")
MN=$(date -d'-1 minute' +%M)
if egrep "${DH}:${MN}:[0-9]+ \-[0-9]+ $MSG" $ARQ;then
curl http://ip-de-destino:porta/code/Luz-Fora-ON
fi
CHECA_HORA
}
CHECA_HORA


É isso, precisando . . .
Abç.:
Marcelo Oliver





  


14. Re: Como criar script para monitorar mensagens no syslog [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 18/10/2016 - 23:21h

moacir_79 escreveu:

moacir_79 escreveu:

Uma última dúvida de novato: na função CHECA_LOG do segundo script, os 3 "#" que aparecem não estão comentando estas linhas?


Perdão Marcelo, depois que vi aqui que eu mesmo inseri esses "#" para testar o script aqui... Falha de iniciante... rs

Muito obrigado pela força!!! Estou sempre visitando este fórum e sempre ajudarei também quando meu pequeno grau de conhecimento permitir!



RSRSRSRS . . . .
Fui eu que errei . . . .
Estava na minha postagem original . . . .

Aproveitando, segue o teste da REGEX da FUNÇãO CHECA_HORA:
for H in {00..23};do egrep '(1[89]|[02][0-3])' <<< "$H"; done
00
01
02
03
18
19
20
21
22
23
Outras formas:
for H in {00..23};do
(($((10#$H))>0 && $((10#$H))<4 || $((10#$H)) >=18 && $((10#$H))<=23)) && echo "$H"
done


for H in {00..23};do
[[ $((10#$H)) -gt 0 && $((10#$H)) -lt 4 || $((10#$H)) -ge 18 && $((10#$H)) -le 23 ]] && echo "$H"
done

marcelo oliver



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts