você pode escrever o seu próprio script de shell que registra exatamente o que você quer, dentro de um loop while (1) com uma chamada de sono no final (ou qualquer duração de sono que você queira). Algo parecido com isto:
function get_logname
{
echo 'date +'%F-%H-%M-%S''.log
}
function am_online
{
ping -c 1 google.com >/dev/null 2>&1
echo $?
}
function update_logfile
{
echo "YOUR DATA TO BE LOGGED" >> $1
}
CUR_LOG='get_logname'
echo $CUR_LOG
while [ 1 ]; do
if [ "'am_online'" -eq 0 ]; then
update_logfile $CUR_LOG
else
echo "we are offline!"
CUR_LOG='get_logname'
fi
sleep 1
done
Enquanto estiver on-line, ele registra no seu arquivo de registro (> > para anexar novos dados, > para reescrever o arquivo para conter apenas os novos dados) a cada segundo. Quando você está offline, ele continuamente seleciona um novo nome para o próximo arquivo de log e não registra nada. Quando você voltar a ficar on-line, ele começa a efetuar login em um novo arquivo de log com o último nome de arquivo de log selecionado, deixando os outros arquivos de log intactos.
Isso deve fazer o truque para você. Tal como acontece com todo o código que encontra online, é da sua responsabilidade testá-lo e certificar-se de que ele faz o que deseja e não quebra nada. Especificamente neste caso, cuidado com o fato de que os arquivos de log podem aumentar de tamanho rapidamente, e que, se você ficar off-line com frequência, poderá acabar com vários arquivos de log.
Salve como algo como "my_internet_logging_script.sh" e execute como:
sh my_internet_logging_script.sh
no diretório onde você deseja que seus arquivos de log (ou edite o script de acordo) apareçam.