Como posso gerenciar meu crontab efetivamente para evitar problemas com várias atualizações de vários usuários?

2

Eu tenho um crontab que inclui muitos usuários atualizando-o. O problema é que, por causa disso, não é fácil saber quem fez a modificação de um cronjob.

Eu estava pensando em criar um script para fazer um diff do crontab com uma versão salva anteriormente para, pelo menos, poder ver o que foi alterado, mas achei que talvez houvesse uma solução padrão para isso. Qual é a melhor abordagem para gerenciar meu crontab?

    
por Jim 07.10.2013 / 22:52

2 respostas

3

Subversion

Eu colocaria o conteúdo do crontab sob controle de subversão e apenas concederia acesso a esse usuário através de sudo . Especificamente, eu só permitiria que as pessoas acessassem o comando a por sudo , o que tiraria a atenção da subversão e a instalaria como o mais recente crontab para esse usuário em particular. Isso fornecerá o seguinte:

  • Uma trilha de auditoria de quem fez o quê
  • A capacidade de reverter para um arquivo crontab anterior se surgir um problema
  • Isole os operadores de ter muita permissão para essa conta especial

Pode parecer muito complicado, mas não há nada muito complicado com o que descrevi se você dividir em pequenos pedaços.

MultiCron

Outra abordagem seria usar uma ferramenta / script como MultiCron . Esta ferramenta permite que você gerencie os dados do crontab externos à entrada do crontab, para que você possa controlar melhor quem / quando tem acesso a essas mudanças.

Exemplo usando o Subversion

Supondo que você configuraria um repositório SVN, você poderia criar uma entrada sudo que permitiria aos usuários fazer algo assim:

$ sudo deploy_app_cron.bash

As entranhas deste script podem fazer, entre outras coisas:

svn cat file:///home/saml/svnrepo/app_cron_data.txt | crontab -u saml -

O conteúdo do arquivo app_cron_data.txt :

$ svn cat file:///home/saml/svnrepo/app_cron_data.txt
*/5 * * * * /path/to/job -with args"

Exemplo de uso de loop

Assim, o userA deseja atualizar a entrada do crontab. Eles fariam o seguinte para começar:

$ cd $HOME/somedir
$ svn co file:///home/saml/svnrepo/ mywksp
A    mywksp/app_cron_data.txt
$ cd mywksp

Agora, eles fazem algumas edições no arquivo crontab, app_cron_data.txt , e as enviam ao repositório quando terminarem.

$ svn commit -m "some msg.." app_cron_data.txt

Para implantar essas alterações, eles executariam este comando sudo :

$ sudo deploy_app_cron.bash

Referências

por 07.10.2013 / 23:53
3

Bem, a solução certa é usar o cron adequadamente e deixar que cada usuário tenha seu próprio crontab por usuário. Existe alguma razão omitida de por que você estaria configurando crontabs dessa maneira? Pode até ser preferível usar crontabs por usuário e alguma outra solução para o que esse "crontab unificado" pretende superar ...?

    
por 07.10.2013 / 23:09

Tags