Назад | Перейти на главную страницу

Сценарий для изменения файлов конфигурации logrotate?

Я ищу сценарий, который позволит мне программно изменять файлы конфигурации logrotate. По крайней мере, я бы хотел, чтобы он мог заменить такой блок, как

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

с новым блоком, заданным в командной строке, через стандартный ввод или через файл (мне все равно, какой). Он должен уметь работать с произвольными файлами конфигурации.

Мне бы очень хотелось, чтобы он понимал конфигурацию достаточно, чтобы я мог сказать что-то вроде

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

и пусть он поступает правильно (удалите ежемесячный и замените его еженедельным в приведенном выше примере).

Это может быть то, что широко известно другим, но я никогда не видел такого.

Моя система - Linux (Ubuntu).

Авгий это инструмент для этого, но он требует довольно крутого обучения. Вот как установить /var/log/wtmp чередоваться еженедельно (некоторые /etc/logrotate.conf обрезано для краткости):

[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
}

Есть линзы (так известны описания файловых структур) для много файлов конфигурации. Писать новые линзы не так уж сложно, если вы понимаете, как все это работает.

Авгий также хорошо связан с Кукольный сделать очень мощную систему управления конфигурациями.

В дополнение к ответу markdrayton я бы добавил, что Augeas теперь можно использовать в качестве интерпретатора, поэтому вы действительно можете написать исполняемый скрипт со следующим содержанием:

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

и выполнить его. Вы даже можете сделать его короче, используя опцию автосохранения (-s):

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