用于检查 resolv.conf 的 Shell 脚本

用于检查 resolv.conf 的 Shell 脚本

我需要编写一个 shell 脚本来检查resolv.conf

例如

domain example.com
search abc.com abc.org abc.net
nameserver 1.1.2.2
nameserver 3.3.4.4

abc.com//abc.org可以abc.net按任意顺序出现

nameserver行可以按任何顺序出现

参数之间可能有空格。

可以使用什么逻辑来检查配置

例如,如果abc.com缺失,则应突出显示 abc.com 缺失

答案1

检查文件是否包含特定模式的最基本方法是使用常见的grep命令行实用程序。

使用正确的标志和选项,您可以构建一个基本脚本,执行与以下伪代码类似的操作:

# Break down the elements you're looking for 
# in basic regular expression patterns 
# and store them in an array

MyRequiredEntries=("nameserver\s*1.1.2.2" "nameserver\s*3.3.4.4" "domain\s*example.com" "search\s.*abc\.com" "search\s.*abc\.net")

# Loop over the array elements 

for MyEntry in "${MyRequiredEntries[@]}" 
do 
   
   # use the exit code of grep -q for further logic 

   grep -q "$MyEntry" /etc/resolv.conf

   MyResult=$?

   if [ $MyResult -eq 0 ]  ; then 
      echo "do something when resolv.conf contains the pattern $MyEntry" 
   else 
      echo "do something when resolv.conf does NOT contain the pattern $MyEntry" 
   fi 
done

当然可以根据您的需要进行微调。


正如其他人所评论的那样:与其玩一场“发现不同之处” 您可能需要退一步思考为什么要进行这项测试以及您打算如何处理您的研究结果。

如果最终结果是确保所有服务器都具有正确的配置,那么最好开始使用配置管理系统来管理它们,并避免将来出现这些差异。
如果启动中央配置管理解决方案仍然太过遥远,而不是测试然后手动修复设置:不要费心,直接在所有地方应用正确的设置...

附注:当您的(某些)系统配置了 DHCP 时,您可能需要从那里开始推送正确的设置。

相关内容