Atualmente estou executando o Arch com i3 e polybar. Eu também mantenho 6 servidores, então para tornar minha vida mais fácil eu fiz uma série de scripts de shell para me avisar se um servidor está inoperante.
Os scripts funcionam, mas estão longe de ser uma solução elegante. No momento, tenho 2 scripts para cada servidor. Um que escreve na barra de status (polybar) e um que grava em um log.
Isso irá gravar no polybar:
#!/bin/bash
srv='ping 000.000.000.000 -c 1 -W 1 \
| sed '2q;d' \
| awk 'NF>1{print $NF}''
fail='date '+%a %H:%M:%S''
if [[ $srv == ms ]]; then
:
else
echo " 000.000.000.000 | $fail "
fi
Isto irá gravar em um arquivo de log:
#!/bin/bash
srv='ping 000.000.000.000 -c 1 -W 1 \
| sed '2q;d' \
| awk 'NF>1{print $NF}''
fail='date '+%a %F %H:%M:%S''
log1='ping 000.000.000.000 -c 1 -W 1'
log2='traceroute 000.000.000.000'
if [[ $srv == ms ]]; then
:
else
echo "<---------------------------------------------->
000.000.000.000 | $fail
----------------------------------------------
$log1
----------------------------------------------
$log2
<---------------------------------------------->
" >> ~/.log/ping.log
fi
Ambos os scripts são adicionados como módulos na minha configuração polybar.
Eu tentei ter ambos os scripts mesclados como um, mas isso faria com que o tempo de carregamento do erro aparecesse em polybar por muito tempo, então os separei em dois scripts de shell separados.
Eu adicionei o traceroute para ver onde a solicitação falha.
Eu sei que tem que haver uma maneira melhor de resolver isso. Um total de 12 scripts de shell é demais e é realmente ineficiente. Alguém tem uma solução melhor para isso? Um que requer menos scripts de shell e ainda irá logar de forma eficiente?
Tags ping traceroute shell-script i3