Portanto, desenvolvi com sucesso um script filewatcher que está funcionando bem. O script lê um arquivo que contém uma lista de arquivos de entrada (caminho completo para o arquivo), delimitado com |
e outras informações. Algo parecido com isto:
/path/to/file/1.txt|600|900|Team1|[email protected]
/path/to/file/2.txt|630|930|Team2|[email protected]
/path/to/file/3.txt|2300|2359|Team3|[email protected]
O primeiro é o arquivo, o segundo e o terceiro são intervalos entre os quais o arquivo geralmente vem, o quarto é o responsável pelo arquivo e o quinto é o e-mail.
O script é executado a cada dez minutos em segundo plano 24/7 e compara os tempos atuais com a segunda e a terceira coluna, se a hora atual estiver entre esses intervalos, verifica se o arquivo está lá ou não. Quando o horário de término (coluna 3) é menor que dez minutos e o arquivo não chegou, um email é enviado para a equipe que o arquivo está faltando.
Para verificar se um arquivo chegou após o tempo definido, defini outra condição que verifica o tempo de término - valor da hora atual. Se for negativo, ele verifica se o arquivo veio depois e perdeu o SLA ou não. Se o arquivo chegar atrasado, o script enviará um email informando que o SLA foi perdido para esse arquivo. Calcula o tempo perdido do "SLA" usando o tempo atual de término do tempo (3ª coluna). Exemplo se o primeiro arquivo chegar às 930 e, em seguida, (930-900) atrasar 30 minutos. Tudo isso funciona bem.
Eu tenho apenas um problema. Se você olhar para a última linha do meu exemplo - os intervalos terminam em 2359 e não consigo calcular se o arquivo chegou depois de 2359 (como esse é o maior tempo em um dia e este menos qualquer valor ganho produzir um valor negativo). Obviamente, eu também não consigo calcular o tempo de falta de SLA correto se ele vier depois disso. Exemplo: se o arquivo chegar às 100 horas, o script pensa que o arquivo veio antes do horário do SLA e não envia nenhum alerta (100-2359 é negativo).
Como posso superar isso?