在BIND中更新100+区域logging的最快方法是什么?

我目前正在使用Cpanel来pipe理我的BIND服务器,每当服务器logging指向closures时,更新100条logging是很痛苦的。

有更快的方法来更新BINDlogging吗? cPanel的方式需要多次点击。 命令行的方式也很慢,你把VI放到每个区域,编辑和保存。

如果我可以准备好预先录制的区域将会很好。 当我需要切换时,我只需要replace区域文件。

如果这是因为某种原因经常进行的操作,那么您可以简单地创build一组configuration文件和数据库文件,然后简单地将您的named.conf作为要激活的任何文件版本的符号链接。 当您需要切换时,更改符号链接并重新启动。

 // named.primary.conf for primary link ... zone "example.org" { type master; file "/etc/bind/master/example.org.primary.dns"; }; 

 // named.backup.conf for primary link ... zone "example.org" { type master; file "/etc/bind/master/example.org.backup.dns"; }; 

如果使用正确的工具,从命令行工作可以非常快速。 例如,您可以使用类似以下的命令来查找特定的文件并进行所需的replace。

 $ find /path -name "*.zone" | sudo xargs sed -i 's/string/replacement/g' 

您需要根据您的需要和文件命名更改search条件。 另外,我认为在开始时不使用-i选项来运行sed是一个好主意,以确保您正确地做到了,或者至less对文件进行了备份。

哈立德的sed命令的一个变种:

 perl -pi.bak -e 's/string/replacement/' *zone 

这将导致perl为每个运行的文件创build一个.bak文件。 当然,如果有必要的话,您可以在expression式中提出更复杂的perl。

这也不会伤害到你的目录的区域文件,并在那里设置版本控制。 就像是:

 git init git add /path/to/zone/files git commit -m 'Initial checkin' 

将设置回购。 然后你可以使用git命令来pipe理你的版本。

你有多个域,所有这些都有基本相同的区域文件?

如果是这样,那么我发现最简单的方法是只删除所有这些区域文件的所有副本,并将删除的区域文件的所有名称符号链接到剩下的一个。 在所述的单区域文件中,确保避免所有这些域的绝对引用,例如使用“@ IN AAAA …”而不是“example.com。IN AAAA …”等。Viola,你可以现在编辑单个区域文件,并将所做的更改同时应用于所有的域。