Converte os usuários crons no cron do sistema

1

Eu quero centralizar muitos crons em / etc / crontab. Agora todo usuário tem seus próprios crons em / var / spool / cron, o que não é nada fácil para mim. Eu quero fazer isso automatizado através de um script, mas o problema é que a sintaxe do cron é diferente. Em / etc / crontab, um usuário deve ser informado. Como posso realizar essa tarefa de forma eficiente?

    
por Tom_13 20.08.2009 / 16:12

2 respostas

2

Você pode começar com algo como:

while read user; 
    do crontab -l -u $user >> usersTabs;
done < <(awk -F: '{print $1}' /etc/passwd )

Isso realmente depende, você quer que eles sejam executados como o mesmo usuário que eram antes?

    
por 20.08.2009 / 16:30
0

Se o meu google estiver correto, a diferença no formato é:

     * syntax:
     *   user crontab:
     *      minutes hours doms months dows cmd\n
     *   system crontab (/etc/crontab):
     *      minutes hours doms months dows USERNAME cmd\n

Supondo que você tenha a saída dos usuários crontabs em uma pasta, você poderia fazer algo como:

find . -type f -print0 | xargs -0 -e perl -pe "s/((\w+\s+){5})(.*)/USERNAME /;"

Eu não sei se esta saída crontab faz sentido para você, então verifique isso. Deveria ser possível tornar este script ainda mais simples com melhor perl ou usando uma ferramenta diferente como awk ou sed, mas não me lembro da sintaxe agora.

    
por 20.08.2009 / 16:42