diff --git a/scripts/server-dhcp/search_entry.sh b/scripts/server-dhcp/search_entry.sh new file mode 100644 index 0000000..6983d6b --- /dev/null +++ b/scripts/server-dhcp/search_entry.sh @@ -0,0 +1,55 @@ +#!/bin/bash + +# Fichier contenant les enregistrements +FILE="/etc/dnsmasq.d/custom_hosts" + +# Vérification de l'existence du fichier +if [[ ! -f "$FILE" ]]; then + echo "Erreur: Le fichier $FILE n'existe pas." + exit 1 +fi + +# Vérification des arguments +if [[ $# -ne 1 ]]; then + echo "Usage: $0 <nom_machine|FQDN|adresse_IP>" + exit 1 +fi + +SEARCH_TERM="$1" + +# Détecter le nom de domaine depuis /etc/resolv.conf +DOMAIN=$(awk '/^search / {print $2; exit} /^domain / {print $2; exit}' /etc/resolv.conf) + +# Vérifier qu'on a bien trouvé un domaine +if [[ -z "$DOMAIN" ]]; then + echo "Erreur: Impossible de détecter le nom de domaine depuis /etc/resolv.conf." + exit 1 +fi + +# Si l'entrée ne contient pas un point (ex: "www" au lieu de "www.domaine.local"), on ajoute le domaine détecté +if [[ ! "$SEARCH_TERM" =~ \. ]]; then + SEARCH_TERM="$SEARCH_TERM.$DOMAIN" +fi + +# Vérification si l'entrée est une adresse IP +if [[ "$SEARCH_TERM" =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then + # Recherche stricte de l'adresse IP en tenant compte du format 'address=/FQDN/IP' + RESULTS=$(grep -E "/$SEARCH_TERM\$" "$FILE") +else + # Vérification que le terme recherché est bien un FQDN valide + if [[ ! "$SEARCH_TERM" =~ ^[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ ]]; then + echo "Erreur: '$SEARCH_TERM' ne semble pas être un FQDN valide." + exit 1 + fi + + # Recherche stricte du FQDN en tenant compte du format 'address=/FQDN/IP' + RESULTS=$(grep -E "^address=/$SEARCH_TERM/" "$FILE") +fi + +# Vérification et affichage des résultats +if [[ -n "$RESULTS" ]]; then + echo "Résultats trouvés :" + echo "$RESULTS" +else + echo "Aucun résultat trouvé pour '$SEARCH_TERM'." +fi