Você não mostra sua linha de shebang, mas com base no que você está procurando, eu diria que você está executando isso em Bash. Se você não tiver uma linha shebang, você deve adicionar uma. O shell Bourne não possui um comando time
embutido, portanto, ele usará /usr/bin/time
, que tem um formato de saída diferente do time
embutido no Bash.
Como você está usando o Bash, é possível definir o formato de saída do comando time
usando a variável TIMEFORMAT
, para não precisar usar grep
e awk
. Eu usaria chaves para evitar qualquer sobrecarga que a criação de um sub-shell pudesse adicionar.
#!/bin/bash
TIMEFORMAT=%R
for host in 192.168.0.7 192.168.0.8 192.168.0.9; do
result=$( { time wget -q --header="Host: domain.tomonitor.com" http://$host/; } 2>&1 )
date=$(date)
echo "$date, $host, $result"
done
Eu não estou familiarizado com o Geektool, então não sei como isso afeta seus resultados. No entanto, as alterações acima podem fazer o script funcionar de forma mais consistente entre os ambientes. Você já pensou se a conectividade é simplesmente muito melhor para o servidor?
Outra coisa a verificar é ver se você está recebendo a resposta esperada para o comando wget
. Às vezes, pequenas vezes indicam que você está recebendo um erro. A execução do script em cron
pode enviar o erro por e-mail, mas você pode registrá-lo fazendo a seguinte alteração:
result=$( { time wget -q --header="Host: domain.tomonitor.com" http://$host/ >/tmp/wget.$$.out 2>&1; } 2>&1 )
, que colocará as mensagens de saída e erro de wget
em um arquivo chamado "/tmp/wget.PID.out", onde "PID" é um ID numérico do processo. A saída de time
ainda irá para a variável.