修改logrotate配置文件的脚本?

修改logrotate配置文件的脚本?

我正在寻找一个脚本,允许我以编程方式修改 logrotate 配置文件。至少我希望它能够替换诸如

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

使用命令行或通过 stdin 或通过文件(我不在乎哪个)给出的新块。它必须能够对任意配置文件进行操作。

如果它能够充分理解配置,我就可以这样说

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

并让它做正确的事情(在上面的例子中,删除每月并将其替换为每周)。

这也许是别人常知的事情,但我却是从未见过的。

我的系统是linux(Ubuntu)。

答案1

奥杰阿斯是实现此目的的工具,但学习难度相当高。以下是如何设置/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
}

有镜头(如文件结构的描述)用于许多配置文件。一旦您了解了一切工作原理,编写新镜头就不会太难。

Augeas 也与木偶制作一个非常强大的配置管理系统。

答案2

除了 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

相关内容