以健壮的方式自动维护syslog.conf等linux配置文件中的条目
有时我想自动将配置添加到我以后可以自行删除的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进行花哨的更改. 开始管理此文件的配置 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或任何你喜欢的代替版本控制. 你有一个配置存储库在svn:/// config /包含etc / syslog.conf,你知道存储库中最新的东西与文件系统上的实时配置文件相同: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- algorithm – sed optimization(基于较小数据集的大文件修改
- SSH自动断开后重连的解决方案
- linux – 使用nginx提供1GB文件的最佳文件系统,在适度写入,
- linux – bash中的别名无法正常工作
- linux – 可以设置postfix以将邮件转发给多个收件人
- Linux sed 命令
- linux – 如何通过bash / shellscript计算文件组中特定单词
- linux – Rundeck 2.5.1 – 本地执行的作业没有匹配的节点
- linux framebuffer驱动程序是一个显卡驱动程序吗?
- linux – 带有webdav的apache2.4给出了405错误