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?
===========================================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É isso, precisando . . .
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
Abç.:
Marcelo Oliver