Aqui está um começo para um validador, escrito em awk, que verifica:
- para linhas não comentadas
- para linhas com campos suficientes para se parecer com uma entrada crontab
- em que o valor do dia do mês em $ 3 não é 1 ou *
- em que o valor do mês não é
*
... depois imprima a linha (ofensiva).
Em uma entrada de amostra de:
53 23 * * * root /usr/lib64/sa/sa2 -A
53 23 1 * * root /usr/lib64/sa/sa2 -A
53 23 2 * * root /usr/lib64/sa/sa2 -A
A saída é:
53 23 2 * * root /usr/lib64/sa/sa2 -A
Isso teria que ser aprimorado para lidar com nomes e intervalos de meses (ou mesmo @monthly
), como a sintaxe do cron permite.
awk '!/^#/ && NF >= 7 && ($3 != 1 && $3 != "*") && $4 != "*" 1'