Eu sugeriria algo assim, que também limparia o arquivo de saída de cada execução, em vez de anexá-lo a cada vez:
#!/usr/local/bin/bash
outfile="/home/insight/scripts/lrkdc01ping.out"
date > "$outfile"
while read output; do
echo -n "$output is " >> "$outfile"
if ping -c1 "$output" > /dev/null 2>&1; then
echo "up" >> "$outfile"
else
echo "down" >> "$outfile"
fi
done < /home/insight/scripts/lrkdc01.txt
As principais diferenças estão usando >
em vez de >>
para a invocação de date
, para que você tenha um arquivo limpo para cada execução; e simplificando seu uso do código de saída de ping
:
É mais limpo apenas
if verb; then
action
else
failure_action
fi
em vez de
verb
if [[ 0 -eq $? ]]; then
action
else
failure_action
fi
Além disso, em vez de ter que editar quatro locais caso decida mover ou alterar o nome do arquivo de saída, eu o coloco em uma variável para que você precise atualizá-lo em um só lugar. Minha regra geral é "se você está digitando a mesma coisa mais do que duas vezes, deve ser abstraído".