Я ищу сценарий, который позволит мне программно изменять файлы конфигурации 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