Eu tenho registradores de dados espalhados pelo sistema de energia solar e um único programa que funciona à meia-noite para coletar os dados do dia e colocá-los em um disco rígido.
O script bash no servidor Ubuntu percorre 7 unidades Raspbian que possuem os dados coletados e os colocam no lugar apropriado no disco rígido, nos diretórios nomeados pelas unidades que estão por aí. Eu descobri como pegar os nomes genéricos hoje.dat e today.png e salvá-los com a data do dia no arquivo como 2017-08-10.png e 2017-08-10.dat
- > Ocasionalmente, uma das unidades não responde devido a algum problema ou outro, e bloqueia a execução do programa.
Por isso, gostaria de usar o ping para testar se o sistema responde antes de decidir se quero coletar dados dele.
Os nomes dos meus sistemas estão todos no arquivo / etc / hosts, então eu os referenciei pelo nome.
Para os fins desta questão, estou verificando o SOLAR - aquele que monitora o comportamento do controlador de carregamento e do inversor.
Veja o que tentei:
if $( ping -c 1 SOLAR | grep icmp* | wc -l ) eq 0
then
(do stuff like ssh -e "gnuplot makepng" then scp the png and raw data)
fi
(muito complicado)
e
if [ $(ping -c 1 SOLAR >/dev/null) eq 0 ]
then do the stuff
fi
(parece OK, mas não entendo a necessidade dos colchetes)
Deve haver uma maneira melhor.
Espero fazer algo mais como
if $(ping -c 1 SOLAR) eq 0
then
(do stuff)
else
(then maybe echo "SOLAR didn't respond" | ssmtp [email protected]
fi
Eu não programei bash em algumas décadas - usei shell C na maior parte do tempo. E estou recebendo dicas demais sobre a melhor maneira de fazer isso.
Então, alguém pode sugerir uma maneira simples de fazer isso?