#!/bin/bash # Basé sur un travail de Cédric Abonnel / Cédrix sous licence CC BY-NC 4.0 # 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étection du nom de domaine if [[ -f /etc/resolv.conf ]]; then DOMAIN=$(awk '/^search / {print $2; exit} /^domain / {print $2; exit}' /etc/resolv.conf) fi # Alternative si resolv.conf n'existe pas ou est vide if [[ -z "$DOMAIN" ]]; then DOMAIN=$(hostname --domain 2>/dev/null) # Essayer avec hostname if [[ -z "$DOMAIN" ]]; then DOMAIN=$(nmcli -t -f IP4.DOMAIN dev show | head -n 1) # Essayer avec nmcli fi fi # Vérifier qu'on a bien trouvé un domaine if [[ -z "$DOMAIN" ]]; then echo "Erreur: Impossible de détecter le nom de domaine." exit 1 fi # Si l'entrée ne contient pas un point, 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 RESULTS=$(grep -E "/$SEARCH_TERM\$" "$FILE") else 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 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