我正在寻找一个脚本,这将允许我以编程方式修改logrotateconfiguration文件。 至less我希望能够replace一个块,如
/var/log/wtmp { missingok monthly create 0664 root utmp rotate 1 }
与一个新的命令行或通过stdin或通过文件(我不关心哪个)给出的块。 它必须能够在任意configuration文件上运行。
我真的很喜欢它,如果它理解了足够的configuration,我可以这样说
logrotateupdate /etc/logrotate.conf /var/log/wtmp weekly
并做它正确的事情(删除每月并在上面的例子中每周更换)。
这可能是别人通常所知道的,但这是我从未见过的。
我的系统是Linux(Ubuntu)。
Augeas是这个工具,但它有一个相当陡峭的学习曲线。 下面是如何设置/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 }
对于许多configuration文件来说,镜头(如文件结构的描述是已知的)。 一旦你掌握了所有的工作原理,写出新镜头并不难。
Augeas也很好地与Puppetbuild立了一个非常强大的configurationpipe理系统。
除了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