64 lines
1.7 KiB
Bash
64 lines
1.7 KiB
Bash
#!/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
|
|
|