web-dev-qa-db-fra.com

Comment puis-je vérifier dhcpd.conf contre une erreur de syntaxe sans exécuter dhcpd?

Je dois m'assurer qu'il n'y a pas d'erreur de syntaxe sur dhcpd.conf. S'il y a des erreurs, je veux obtenir ce qu'elles sont.

Je peux vérifier les erreurs de syntaxe avec cette commande:

dhcpd -cf /path/to/dhcpd.conf

mais cela imprime beaucoup d'informations en plus de l'erreur que j'ai. Une autre chose est que je ne veux pas exécuter dhcpd, même s'il n'y a pas d'erreur de syntaxe. Je veux seulement vérifier les erreurs de syntaxe et voir ce qu'elles sont.


Malheureusement, exécuter dhcpd -tf /path/to/dhcpd.conf n'a pas non plus résolu mon problème.

14
ibrahim

La syntaxe que vous recherchez est

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

L'option -t fera une vérification de la configuration:

Si l'indicateur -t est spécifié, le serveur testera simplement le fichier de configuration pour s'assurer que la syntaxe est correcte, mais ne tentera aucune opération sur le réseau. Ceci peut être utilisé pour tester automatiquement le nouveau fichier de configuration avant de l'installer.

Vous n'avez pas besoin d'utiliser -cf si vous utilisez le chemin d'accès au fichier de configuration par défaut.

/usr/sbin/dhcpd -t

Celui que vous avez essayé avec -tf /path/to/... est assez différent et concerne le traçage.

22
John

Une chose qui n'apparaît pas sur la page de manuel, et qui n'est pas encore couverte ici, est que la commande '/ usr/sbin/dhcpd -t' utilise la valeur de retour pour indiquer si la configuration est correcte ou non.

S'il n'y a pas d'erreur, il retournera zéro. s'il y a des erreurs de syntaxe, il retournera non nul (1 pour le test que j'ai fait)

Donc, vous pouvez utiliser quelque chose comme:

/usr/sbin/dhcpd -t
if [ $? -ne 0 ]; then
  echo "Configuration has errors, aborting"
fi
/bin/systemctl restart isc-dhcp-server

Vérifier si les modifications apportées à la configuration sont valides avant d'essayer de redémarrer le serveur avec la nouvelle version.

Malheureusement, je ne pense pas qu'il y ait une option pour afficher uniquement les erreurs. Il serait possible d'utiliser un outil d'analyse de texte (awk, python, etc.) pour supprimer les lignes d'en-tête (pour la version que j'ai, tout jusqu'à une ligne commençant par "Pour info"), et les lignes de fin (pour la version que j'ai , tout ce qui suit une ligne disant "Erreurs de fichier de configuration rencontrées - sortie") qui ne laisserait que l'erreur de syntaxe et l'emplacement

0
Michael Firth