-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdns-remove-domain
More file actions
executable file
·73 lines (59 loc) · 2.41 KB
/
Copy pathdns-remove-domain
File metadata and controls
executable file
·73 lines (59 loc) · 2.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#!/bin/bash
# ==============================================================================
# SCRIPT: dns-remove-domain
# Elimina un dominio (zona) completo de la configuración de BIND9.
# Uso: sudo dns-remove-domain <DOMAIN_NAME>
# Ejemplo: sudo dns-remove-domain mi.arca
# ==============================================================================
# --- VARIABLES DE CONFIGURACIÓN ---
NAMED_CONF_LOCAL="/etc/bind/named.conf.local"
ZONE_DIR="/etc/bind"
# -----------------------------------
# 1. Chequeo de permisos y argumentos
if [ "$(id -u)" -ne 0 ]; then
echo "🚨 ERROR: Este script DEBE ejecutarse con 'sudo'."
echo "Uso: sudo dns-remove-domain <DOMAIN_NAME>"
exit 1
fi
if [ "$#" -ne 1 ]; then
echo "Uso: sudo dns-remove-domain <DOMAIN_NAME>"
echo "Ejemplo: sudo dns-remove-domain mi.arca"
exit 1
fi
DOMAIN_NAME="$1"
ZONE_FILE="$ZONE_DIR/db.$DOMAIN_NAME"
echo "--- Eliminando dominio (zona) $DOMAIN_NAME ---"
# 2. Comprobar si la zona existe
if ! grep -q "zone \"$DOMAIN_NAME\"" "$NAMED_CONF_LOCAL"; then
echo "INFO: La zona \"$DOMAIN_NAME\" no está definida en $NAMED_CONF_LOCAL. Omitiendo la eliminación de named.conf.local."
else
# 3. Eliminar la definición de zona de named.conf.local
echo "Paso 1: Eliminando la definición de la zona de $NAMED_CONF_LOCAL..."
# sed busca el inicio de la definición de zona y elimina todas las líneas hasta el cierre '};'
sudo sed -i "/zone \"$DOMAIN_NAME\" {/,/};/d" "$NAMED_CONF_LOCAL"
echo "✅ Definición de zona eliminada."
fi
# 4. Eliminar el archivo de zona
if [ -f "$ZONE_FILE" ]; then
echo "Paso 2: Eliminando el archivo de zona $ZONE_FILE..."
sudo rm "$ZONE_FILE"
echo "✅ Archivo de zona eliminado."
else
echo "INFO: El archivo de zona $ZONE_FILE no existe. Omitiendo la eliminación del archivo."
fi
# 5. Recargar BIND9 y verificar la sintaxis
echo "Paso 3: Verificando sintaxis y recargando BIND9..."
# Verificar named.conf.local (si hay errores, la recarga fallará)
sudo named-checkconf "$NAMED_CONF_LOCAL"
if [ $? -ne 0 ]; then
echo "🚨 ERROR de sintaxis en $NAMED_CONF_LOCAL DESPUÉS de la eliminación. BIND9 NO se recargó."
exit 1
fi
# Recargar servicio
sudo systemctl reload bind9
if [ $? -eq 0 ]; then
echo "🎉 ¡Éxito! El dominio $DOMAIN_NAME ha sido eliminado y BIND9 recargado."
else
echo "🚨 ERROR: Fallo al recargar BIND9. Revise los logs: journalctl -u bind9"
exit 1
fi