Adicionar conf-inicial
This commit is contained in:
+388
@@ -0,0 +1,388 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# ============================================================
|
||||||
|
# Preparação de VM Debian 13
|
||||||
|
#
|
||||||
|
# - Configura hostname
|
||||||
|
# - Configura domínio
|
||||||
|
# - Detecta interfaces diretamente do sistema
|
||||||
|
# - Recria /etc/network/interfaces do ZERO
|
||||||
|
# - Permite DHCP ou IP estático por interface
|
||||||
|
# - Limpa histórico
|
||||||
|
# - Desliga a máquina ao final
|
||||||
|
# ============================================================
|
||||||
|
|
||||||
|
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
# Verifica root
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
|
||||||
|
if [ "$EUID" -ne 0 ]; then
|
||||||
|
echo "ERRO: execute este script como root."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# ============================================================
|
||||||
|
# HOSTNAME / DOMÍNIO
|
||||||
|
# ============================================================
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "============================================================"
|
||||||
|
echo " CONFIGURAÇÃO DO HOST"
|
||||||
|
echo "============================================================"
|
||||||
|
echo
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
read -rp "Novo nome da máquina: " NEW_HOSTNAME
|
||||||
|
|
||||||
|
if [ -n "$NEW_HOSTNAME" ]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "O nome da máquina não pode ficar vazio."
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
read -rp "Domínio (ex.: fatec.local): " NEW_DOMAIN
|
||||||
|
|
||||||
|
if [ -n "$NEW_DOMAIN" ]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "O domínio não pode ficar vazio."
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
FQDN="${NEW_HOSTNAME}.${NEW_DOMAIN}"
|
||||||
|
|
||||||
|
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
# Configura hostname
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
|
||||||
|
echo "$NEW_HOSTNAME" > /etc/hostname
|
||||||
|
|
||||||
|
hostnamectl set-hostname "$NEW_HOSTNAME"
|
||||||
|
|
||||||
|
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
# Recria /etc/hosts
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
|
||||||
|
cat > /etc/hosts <<EOF
|
||||||
|
127.0.0.1 localhost
|
||||||
|
127.0.1.1 $FQDN $NEW_HOSTNAME
|
||||||
|
|
||||||
|
::1 localhost ip6-localhost ip6-loopback
|
||||||
|
ff02::1 ip6-allnodes
|
||||||
|
ff02::2 ip6-allrouters
|
||||||
|
EOF
|
||||||
|
|
||||||
|
|
||||||
|
# ============================================================
|
||||||
|
# DETECÇÃO DAS INTERFACES
|
||||||
|
# ============================================================
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "============================================================"
|
||||||
|
echo " DETECÇÃO DAS INTERFACES DE REDE"
|
||||||
|
echo "============================================================"
|
||||||
|
echo
|
||||||
|
|
||||||
|
|
||||||
|
mapfile -t INTERFACES < <(
|
||||||
|
ls /sys/class/net |
|
||||||
|
grep -v '^lo$'
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
if [ "${#INTERFACES[@]}" -eq 0 ]; then
|
||||||
|
echo "ERRO: nenhuma interface de rede encontrada."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
echo "Interfaces encontradas:"
|
||||||
|
echo
|
||||||
|
|
||||||
|
for IFACE in "${INTERFACES[@]}"; do
|
||||||
|
|
||||||
|
MAC=$(cat "/sys/class/net/$IFACE/address" 2>/dev/null || echo "desconhecido")
|
||||||
|
|
||||||
|
echo " Interface: $IFACE"
|
||||||
|
echo " MAC: $MAC"
|
||||||
|
echo
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
# ============================================================
|
||||||
|
# RECRIA /etc/network/interfaces DO ZERO
|
||||||
|
# ============================================================
|
||||||
|
|
||||||
|
cat > /etc/network/interfaces <<EOF
|
||||||
|
# ============================================================
|
||||||
|
# Configuração de rede
|
||||||
|
# Gerada automaticamente
|
||||||
|
# ============================================================
|
||||||
|
|
||||||
|
auto lo
|
||||||
|
iface lo inet loopback
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
||||||
|
|
||||||
|
# ============================================================
|
||||||
|
# CONFIGURAÇÃO DAS INTERFACES
|
||||||
|
# ============================================================
|
||||||
|
|
||||||
|
for IFACE in "${INTERFACES[@]}"; do
|
||||||
|
|
||||||
|
MAC=$(cat "/sys/class/net/$IFACE/address" 2>/dev/null || echo "desconhecido")
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "============================================================"
|
||||||
|
echo " Interface: $IFACE"
|
||||||
|
echo " MAC: $MAC"
|
||||||
|
echo "============================================================"
|
||||||
|
echo
|
||||||
|
echo "Como deseja configurar esta interface?"
|
||||||
|
echo
|
||||||
|
echo " 1) DHCP"
|
||||||
|
echo " 2) IP estático"
|
||||||
|
echo " 3) Não configurar"
|
||||||
|
echo
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
|
||||||
|
read -rp "Opção [1/2/3]: " OPTION
|
||||||
|
|
||||||
|
case "$OPTION" in
|
||||||
|
|
||||||
|
1)
|
||||||
|
# ====================================================
|
||||||
|
# DHCP
|
||||||
|
# ====================================================
|
||||||
|
|
||||||
|
cat >> /etc/network/interfaces <<EOF
|
||||||
|
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
# Interface $IFACE - DHCP
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
|
||||||
|
auto $IFACE
|
||||||
|
allow-hotplug $IFACE
|
||||||
|
iface $IFACE inet dhcp
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "$IFACE configurada para DHCP."
|
||||||
|
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
|
||||||
|
|
||||||
|
2)
|
||||||
|
# ====================================================
|
||||||
|
# ESTÁTICO
|
||||||
|
# ====================================================
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "Configuração estática de $IFACE"
|
||||||
|
echo
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
read -rp "Endereço IPv4 (ex.: 192.168.10.20): " IPADDR
|
||||||
|
|
||||||
|
if [[ "$IPADDR" =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}$ ]]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Endereço IPv4 inválido."
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
read -rp "Prefixo da rede (ex.: 24): " PREFIX
|
||||||
|
|
||||||
|
if [[ "$PREFIX" =~ ^[0-9]+$ ]] &&
|
||||||
|
[ "$PREFIX" -ge 0 ] &&
|
||||||
|
[ "$PREFIX" -le 32 ]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Prefixo inválido. Informe um valor entre 0 e 32."
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
echo
|
||||||
|
read -rp "Gateway [ENTER para nenhum]: " GATEWAY
|
||||||
|
|
||||||
|
echo
|
||||||
|
read -rp "Servidor(es) DNS separados por espaço [ENTER para nenhum]: " DNS
|
||||||
|
|
||||||
|
echo
|
||||||
|
read -rp "Domínio de pesquisa DNS [$NEW_DOMAIN]: " DNS_SEARCH
|
||||||
|
|
||||||
|
if [ -z "$DNS_SEARCH" ]; then
|
||||||
|
DNS_SEARCH="$NEW_DOMAIN"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
cat >> /etc/network/interfaces <<EOF
|
||||||
|
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
# Interface $IFACE - ESTÁTICA
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
|
||||||
|
auto $IFACE
|
||||||
|
allow-hotplug $IFACE
|
||||||
|
iface $IFACE inet static
|
||||||
|
address $IPADDR/$PREFIX
|
||||||
|
EOF
|
||||||
|
|
||||||
|
|
||||||
|
if [ -n "$GATEWAY" ]; then
|
||||||
|
echo " gateway $GATEWAY" >> /etc/network/interfaces
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ -n "$DNS" ]; then
|
||||||
|
echo " dns-nameservers $DNS" >> /etc/network/interfaces
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ -n "$DNS_SEARCH" ]; then
|
||||||
|
echo " dns-search $DNS_SEARCH" >> /etc/network/interfaces
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "$IFACE configurada com IP estático."
|
||||||
|
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
|
||||||
|
|
||||||
|
3)
|
||||||
|
echo
|
||||||
|
echo "$IFACE não será configurada."
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo
|
||||||
|
echo "Opção inválida."
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
done
|
||||||
|
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
# ============================================================
|
||||||
|
# MOSTRA CONFIGURAÇÃO FINAL
|
||||||
|
# ============================================================
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "============================================================"
|
||||||
|
echo " CONFIGURAÇÃO FINAL"
|
||||||
|
echo "============================================================"
|
||||||
|
echo
|
||||||
|
|
||||||
|
echo "Hostname : $NEW_HOSTNAME"
|
||||||
|
echo "Domínio : $NEW_DOMAIN"
|
||||||
|
echo "FQDN : $FQDN"
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "------------------------------------------------------------"
|
||||||
|
echo "/etc/network/interfaces"
|
||||||
|
echo "------------------------------------------------------------"
|
||||||
|
echo
|
||||||
|
|
||||||
|
cat /etc/network/interfaces
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "------------------------------------------------------------"
|
||||||
|
|
||||||
|
|
||||||
|
# ============================================================
|
||||||
|
# LIMPA HISTÓRICO
|
||||||
|
# ============================================================
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "Limpando históricos..."
|
||||||
|
|
||||||
|
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
# Root
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
|
||||||
|
history -c 2>/dev/null || true
|
||||||
|
|
||||||
|
rm -f /root/.bash_history
|
||||||
|
rm -f /root/.zsh_history
|
||||||
|
|
||||||
|
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
# Outros usuários
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
|
||||||
|
while IFS=: read -r USERNAME _ UID _ _ HOME_DIR SHELL; do
|
||||||
|
|
||||||
|
if [ "$UID" -ge 1000 ] && [ -d "$HOME_DIR" ]; then
|
||||||
|
|
||||||
|
rm -f "$HOME_DIR/.bash_history"
|
||||||
|
rm -f "$HOME_DIR/.zsh_history"
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
done < /etc/passwd
|
||||||
|
|
||||||
|
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
# Remove histórico da sessão atual
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
|
||||||
|
unset HISTFILE
|
||||||
|
|
||||||
|
export HISTFILE=/dev/null
|
||||||
|
|
||||||
|
|
||||||
|
# ============================================================
|
||||||
|
# SINCRONIZA DISCO
|
||||||
|
# ============================================================
|
||||||
|
|
||||||
|
sync
|
||||||
|
|
||||||
|
|
||||||
|
# ============================================================
|
||||||
|
# RESULTADO
|
||||||
|
# ============================================================
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "============================================================"
|
||||||
|
echo " CONFIGURAÇÃO CONCLUÍDA"
|
||||||
|
echo "============================================================"
|
||||||
|
echo
|
||||||
|
echo "Hostname : $NEW_HOSTNAME"
|
||||||
|
echo "FQDN : $FQDN"
|
||||||
|
echo
|
||||||
|
echo "A configuração de rede foi recriada do zero."
|
||||||
|
echo
|
||||||
|
echo "A máquina será desligada."
|
||||||
|
echo
|
||||||
|
|
||||||
|
|
||||||
|
# ============================================================
|
||||||
|
# DESLIGA
|
||||||
|
# ============================================================
|
||||||
|
|
||||||
|
systemctl poweroff
|
||||||
Reference in New Issue
Block a user