我需要确保dhcpd.conf上没有语法错误。如果有错误,我想知道它们是什么。
我可以使用此命令检查语法错误:
dhcpd -cf /path/to/dhcpd.conf
但是除了我得到的错误之外,还会打印很多信息。另一件事是我不想运行dhcpd,即使没有语法错误。我只想检查语法错误并查看它们是什么。
不幸的是,运行dhcpd -tf /path/to/dhcpd.conf
也无法解决我的问题。
答案 0 :(得分:23)
您正在寻找的语法是
dhcpd -t -cf /path/to/dhcpd.conf
-t
选项将进行配置检查:
如果指定了-t标志,则服务器将仅测试配置文件的语法是否正确,但不会尝试执行任何网络操作。这可用于在安装之前自动测试新配置文件。
如果您使用的是默认配置文件路径,则无需使用-cf
。
/usr/sbin/dhcpd -t
您使用-tf /path/to/...
尝试的那个是完全不同的,与跟踪有关。
答案 1 :(得分:0)
手册页上没有提到的一件事,也是此处未涉及的一件事,是'/ usr / sbin / dhcpd -t'命令使用返回值来指示配置是否正确。
如果没有错误,它将返回零。如果存在语法错误,它将返回非零值(我所做的测试为1)
因此您可以使用类似的内容:
/usr/sbin/dhcpd -t
if [ $? -ne 0 ]; then
echo "Configuration has errors, aborting"
fi
/bin/systemctl restart isc-dhcp-server
在尝试使用新版本重新启动服务器之前,要检查对配置所做的更改是否有效。
不幸的是,我认为没有任何选择可以显示错误。可以使用文本解析工具(awk,python等)删除标头行(对于我拥有的版本,所有内容以“ For info”开头的行)和尾随行(对于我拥有的版本,在显示“遇到配置文件错误-退出”的行之后的所有内容),只会留下语法错误和位置