【问题标题】:How can I check dhcpd.conf against syntax error without running dhcpd?如何在不运行 dhcpd 的情况下检查 dhcpd.conf 的语法错误?
【发布时间】:2012-12-14 12:28:14
【问题描述】:

我需要确保 dhcpd.conf 上没有语法错误。如果有错误,我想知道它们是什么。

我可以用这个命令检查语法错误:

dhcpd -cf /path/to/dhcpd.conf

但是除了我得到的错误之外,它还会打印很多信息。另一件事是我不想运行 dhcpd,即使没有语法错误。我只想检查语法错误,看看它们是什么。


不幸的是,运行dhcpd -tf /path/to/dhcpd.conf 也没有解决我的问题。

【问题讨论】:

  • 警告:如果您以 root 身份运行上述命令,您将覆盖现有的 dhcpd.conf!它将跟踪写入该路径!

标签: linux bash dhcp


【解决方案1】:

您要查找的语法是

dhcpd -t -cf /path/to/dhcpd.conf

-t 选项将进行配置检查:

如果指定了 -t 标志,服务器将简单地测试配置文件的语法是否正确,但不会尝试执行任何网络操作。这可用于在安装之前自动测试新的配置文件。

如果您使用默认配置文件路径,则无需使用-cf

/usr/sbin/dhcpd -t

您尝试使用 -tf /path/to/... 的方法完全不同,并且与跟踪有关。

【讨论】:

  • 是的,这个命令不运行dhcpd,但是除了错误之外仍然打印很多东西。我只想打印它是什么错误
【解决方案2】:

手册页上没有,也没有在这里介绍的一件事是,'/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”开头的行)和尾行(对于我拥有的版本) , 一行后面的所有内容都说“遇到配置文件错误 - 正在退出”),这将只留下语法错误和位置

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-02
    • 2010-09-15
    • 2022-01-18
    • 2011-05-16
    • 2015-12-05
    • 2013-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多