Reputation: 3404
I need to make sure there are no syntax errors on dhcpd.conf. If there are errors, I want to get what they are.
I can check for syntax errors with this command:
dhcpd -cf /path/to/dhcpd.conf
but that prints a lot of information in addition to the error I got. Another thing is that I don't want to run dhcpd, even there is no syntax error. I only want to check for syntax errors and see what they are.
Unfortunately, running dhcpd -tf /path/to/dhcpd.conf
also didn't solve my problem.
Upvotes: 25
Views: 76452
Reputation: 573
One thing not on the manual page, and not covered here yet, is that the '/usr/sbin/dhcpd -t' command uses the return value to indicate whether the configuration is correct or not.
If there are no errors, it will return zero. if there are syntax errors it will return non zero (1 for the test I did)
So you can use something like:
/usr/sbin/dhcpd -t
if [ $? -ne 0 ]; then
echo "Configuration has errors, aborting"
fi
/bin/systemctl restart isc-dhcp-server
To check if changes made to the configuration are valid before trying to restart the server with the new version.
Unfortunately I don't think there is any option to just display the errors. It would be possible to use a text parsing tool (awk, python etc) to remove the header lines (for the version I have, everything up to a line beginning with "For info"), and trailer lines (for the version I have, everything after a line saying "Configuration file errors encountered -- exiting") which would leave just the syntax error and location
Upvotes: 1
Reputation: 468
The syntax you are looking for is
dhcpd -t -cf /path/to/dhcpd.conf
The -t
option will do a config check:
If the -t flag is specified, the server will simply test the configuration file for correct syntax, but will not attempt to perform any network operations. This can be used to test the new configuration file automatically before installing it.
You do not need to use -cf
if you are using the default config file path.
/usr/sbin/dhcpd -t
The one you tried with -tf /path/to/...
is quite different and relates to tracing.
Upvotes: 44