#!/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 " 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