Daemonio
(usa Slackware)
Enviado em 27/03/2010 - 22:39h
Olhando seu código, dá até para você evitar o uso do sed. Modifique a variável $DIAHOY de modo que ela contenha somente a data e hh:mm, ou seja, retire os segundos aí mesmo para não precisar do sed a frente.
Para manter os segundos, você pode fazer o seguinte:
Antes de redirecionar a saida para seu arquivo de log, verifique se o tempo (em hh:mm) e o ip da linha que será montada já foram adicionados. Basta usar um grep cada vez que uma linha for adicionada, se ele retornar false quer dizer que a linha ainda não está logada no arquivo.
FILE='/usr/local/easycaptive/log/accesos.log'
# Verdade se a linha NAO existe
if ! grep -qE "${DIAHOY_SEM_SEGUNDOS}:[0-9]{2} [AP]M $REMOTE_ADDR" $FILE
then
echo "$DIAHOY_COM_SEGUNDOS $REMOTE_ADDR $mac_user - login.html" >> $FILE
fi
Veja que se:
DIAHOY_COM_SEGUNDOS == "24/03/2010 - 08:01:10 PM"
então
DIAHOY_SEM_SEGUNDOS == "24/03/2010 - 08:01"
Assim deve funcionar sem nos preocuparmos em ordenar o arquivo.
Veja que quando você disponibilizou o seu código as coisas ficaram mais fáceis de serem resolvidas. xD
inté
t+