加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

以健壮的方式自动维护syslog.conf等linux配置文件中的条目

发布时间:2020-12-14 02:29:50 所属栏目:Linux 来源:网络整理
导读:有时我想自动将配置添加到我以后可以自行删除的conf文件中,例如我想暂时让10个主机登录到远程syslog服务器.所以我在脚本中是这样的; ##some other commands echo "kern.* @syslog.server.local" /etc/syslog.confservice syslogd restart 但是我经常更新其他
有时我想自动将配置添加到我以后可以自行删除的conf文件中,例如我想暂时让10个主机登录到远程syslog服务器.所以我在脚本中是这样的;
##some other commands 
echo "kern.*            @syslog.server.local" >> /etc/syslog.conf
service syslogd restart

但是我经常更新其他一些命令并再次运行脚本.显然这不是幂等的,我不能重新应用它没有一些grep / delete jiggerpokery,我不能轻易删除它.

所以我采取了这样的做法;

cat <<HEREDOC >>/etc/syslog.conf
###some unique string###
echo "kern.*            @syslog.server.local"
###end some unique string###
HEREDOC

这允许我这样做,使操作可重复…

sed -e 's/###some unique string###(*)###end some unique string###/replacement/g' /tmp/syslog.conf > /tmp/syslog.conf
cat <<HEREDOC >>$dfile
###some unique string###
echo "kecrn.*            @syslog.server.local"
###end some unique string###
HEREDOC

然而这一切似乎都有点……

(显然/etc/httpd/conf.d/someconffile.conf安排已解决了新版程序包的问题)

有更简单的方法吗?

我应该注意这种方法的任何警告?

解决方法

我已经使用SVN了.
假使,假设

>你有一个svn存储库为每个主机:http://svn.localnet/thishost/,你想开始对’thishost’上的真实/etc/syslog.conf进行花哨的更改.
>您已经在/ configs /中为此主机配置了本地配置存储库

开始管理此文件的配置

cp /etc/syslog.conf /configs/etc/
svn add /configs/etc/syslog.conf
svn commit -m "Managing syslog.conf"

通过脚本进行更改

#echo some stuff into the file.. no need for extra markup/metadata
cp /etc/syslog.conf /configs/etc/
svn commit -m "I added some junk temporarily"
service syslogd restart

现在您可以回滚到以前的版本.如果在添加和回滚之间进行了其他永久性更改,则可以使用svn来获取版本之间的差异,并将这些内容合并在一起.

当然,用git或任何你喜欢的代替版本控制.
并且还制作一些永久性脚本以减少出错的可能性,例如bash函数将cp作为基于路径的checkout repo中的文件,将提交注释作为参数.管他呢.

你有一个配置存储库在svn:/// config /包含etc / syslog.conf,你知道存储库中最新的东西与文件系统上的实时配置文件相同:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读