web-dev-qa-db-ja.com

dhcpdを実行せずにdhcpd.confを構文エラーと照合するにはどうすればよいですか?

Dhcpd.confに構文エラーがないことを確認する必要があります。エラーがある場合は、エラーを取得したいと思います。

このコマンドで構文エラーをチェックできます:

dhcpd -cf /path/to/dhcpd.conf

しかし、それは私が得たエラーに加えて多くの情報を出力します。もう1つは、構文エラーがない場合でも、dhcpdを実行したくないということです。構文エラーをチェックして、その内容を確認したいだけです。


残念ながら、dhcpd -tf /path/to/dhcpd.confも私の問題を解決しませんでした。

18
ibrahim

あなたが探している構文は

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

-tオプションは設定チェックを行います:

-tフラグが指定されている場合、サーバーは構成ファイルの正しい構文をテストするだけですが、ネットワーク操作は実行しません。これを使用して、新しい構成ファイルをインストールする前に自動的にテストできます。

デフォルトの設定ファイルパスを使用している場合は、-cfを使用する必要はありません。

/usr/sbin/dhcpd -t

-tf /path/to/...で試したものはまったく異なり、トレースに関連しています。

23
John

マニュアルページにない、ここではまだカバーされていないことの1つは、「/ 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など))を使用してヘッダー行を削除することができます(私が持っているバージョンでは、「情報」で始まる行まですべて)、とトレーラー行(私が持っているバージョンでは、「構成ファイルのエラーが発生しました-終了しています」という行の後のすべて)構文エラーと場所だけを残します

0
Michael Firth