Script para modificar os arquivos de configuração do logrotate?

2

Estou procurando um script que me permita modificar programaticamente os arquivos de configuração do logrotate. No mínimo eu gostaria que fosse capaz de substituir um bloco como

/var/log/wtmp {
    missingok
    monthly
    create 0664 root utmp
    rotate 1
}

com um novo bloco dado na linha de comando ou via stdin ou via arquivo (não importa qual). Deve ser capaz de operar em arquivos de configuração arbitrários.

Eu realmente gostaria que entendesse a configuração o suficiente para que eu pudesse dizer algo como

logrotateupdate /etc/logrotate.conf /var/log/wtmp weekly

e faça-o a coisa certa (remova o mensal e substitua-o semanalmente no exemplo acima).

Isso pode ser algo comum aos outros, mas é algo que eu nunca vi.

Meu sistema é linux (Ubuntu).

    
por Michael Kohne 15.09.2009 / 13:16

2 respostas

2

Augeas é a ferramenta para isso, mas tem uma curva de aprendizado bastante íngreme. Veja como definir /var/log/wtmp para alternar semanalmente (alguns /etc/logrotate.conf foram reduzidos para brevidade):

[root@dev ~]# cat /etc/logrotate.conf 
# trimmed

# no packages own wtmp -- we'll rotate them here
/var/log/wtmp {
    monthly
    minsize 1M
    create 0664 root utmp
    rotate 1
}

[root@dev ~]# (echo "set \
  /files/etc/logrotate.conf/rule[file='/var/log/wtmp']/schedule weekly"; \
  echo save) | augtool
Saved 1 file(s)

[root@dev ~]# cat /etc/logrotate.conf 
# trimmed

# no packages own wtmp -- we'll rotate them here
/var/log/wtmp {
    weekly
    minsize 1M
    create 0664 root utmp
    rotate 1
}

Existem lentes (como as descrições de estruturas de arquivos são conhecidas) para muitos arquivos de configuração . Escrever novas lentes não é muito difícil depois de saber como tudo funciona.

O Augeas também combina muito bem com o Puppet para criar um sistema de gerenciamento de configurações muito poderoso.

    
por 15.09.2009 / 14:02
0

Além da resposta do markdrayton, eu adicionaria que o Augeas agora pode ser usado como um interpretador, então você pode realmente escrever um script executável com o seguinte conteúdo:

#!/usr/bin/augtool -f
set /files/etc/logrotate.conf/rule[file='/var/log/wtmp']/schedule weekly
save

e executá-lo. Você pode até diminuí-lo usando a opção de salvamento automático ( -s ):

#!/usr/bin/augtool -sf
set /files/etc/logrotate.conf/rule[file='/var/log/wtmp']/schedule weekly
    
por 12.12.2011 / 21:54