diff --git a/conf-inicial b/conf-inicial index 2bd6d35..b30f7ad 100644 --- a/conf-inicial +++ b/conf-inicial @@ -3,14 +3,12 @@ set -e # ============================================================ -# Configuração inicial de VM Debian 13 +# Renomear VM Debian 13 # -# - Configura hostname -# - Configura domínio -# - Recria /etc/hosts -# - Detecta interfaces de rede -# - Recria /etc/network/interfaces do zero -# - DHCP / Estático / Não configurar por interface +# - Altera hostname +# - Altera domínio +# - Atualiza /etc/hostname +# - Atualiza /etc/hosts # - Limpa históricos # - Desliga a máquina ao final # @@ -31,29 +29,7 @@ read_tty() { } -valid_ipv4() { - local ip="$1" - local IFS=. - local -a octets - - read -ra octets <<< "$ip" - - [ "${#octets[@]}" -eq 4 ] || return 1 - - for octet in "${octets[@]}"; do - - [[ "$octet" =~ ^[0-9]+$ ]] || return 1 - - [ "$octet" -ge 0 ] 2>/dev/null || return 1 - [ "$octet" -le 255 ] 2>/dev/null || return 1 - - done - - return 0 -} - - -valid_hostname() { +valid_name() { local value="$1" [[ "$value" =~ ^[a-zA-Z0-9]([a-zA-Z0-9.-]*[a-zA-Z0-9])?$ ]] @@ -61,17 +37,14 @@ valid_hostname() { # ============================================================ -# VERIFICA ROOT +# ROOT # ============================================================ if [ "$EUID" -ne 0 ]; then - echo echo "ERRO: execute este script como root." echo - exit 1 - fi @@ -83,7 +56,7 @@ clear 2>/dev/null || true echo echo "============================================================" -echo " CONFIGURAÇÃO INICIAL - DEBIAN 13" +echo " RENOMEAR MÁQUINA - DEBIAN 13" echo "============================================================" echo @@ -97,20 +70,13 @@ while true; do read_tty "Novo nome da máquina: " NEW_HOSTNAME if [ -z "$NEW_HOSTNAME" ]; then - echo "O nome da máquina não pode ficar vazio." - continue - fi - - if ! valid_hostname "$NEW_HOSTNAME"; then - + if ! valid_name "$NEW_HOSTNAME"; then echo "Hostname inválido." - continue - fi break @@ -127,20 +93,13 @@ while true; do read_tty "Domínio (ex.: fatec.local): " NEW_DOMAIN if [ -z "$NEW_DOMAIN" ]; then - echo "O domínio não pode ficar vazio." - continue - fi - - if ! valid_hostname "$NEW_DOMAIN"; then - + if ! valid_name "$NEW_DOMAIN"; then echo "Domínio inválido." - continue - fi break @@ -163,20 +122,15 @@ echo "FQDN : $FQDN" echo "------------------------------------------------------------" echo -read_tty "Continuar? [S/n]: " CONFIRM +read_tty "Confirmar alteração? [S/n]: " CONFIRM case "$CONFIRM" in - n|N|nao|não|NAO|NÃO) - echo echo "Operação cancelada." - echo - exit 0 ;; - esac @@ -185,7 +139,7 @@ esac # ============================================================ echo -echo "Configurando hostname..." +echo "Alterando hostname..." echo "$NEW_HOSTNAME" > /etc/hostname @@ -196,7 +150,7 @@ hostnamectl set-hostname "$NEW_HOSTNAME" # RECRIA /etc/hosts # ============================================================ -echo "Configurando /etc/hosts..." +echo "Atualizando /etc/hosts..." cat > /etc/hosts < /etc/network/interfaces <<'EOF' -# ============================================================ -# Configuração de rede -# Gerada automaticamente pelo script de configuração inicial -# ============================================================ - -auto lo -iface lo inet loopback - -EOF - - -# ============================================================ -# CONFIGURA CADA INTERFACE -# ============================================================ - -for IFACE in "${INTERFACES[@]}"; do - - MAC="desconhecido" - - - if [ -f "/sys/class/net/$IFACE/address" ]; then - - MAC=$(cat "/sys/class/net/$IFACE/address") - - fi - - - echo - echo "============================================================" - echo " INTERFACE: $IFACE" - echo " MAC: $MAC" - echo "============================================================" - echo - echo "1) DHCP" - echo "2) IP estático" - echo "3) Não configurar" - echo - - - while true; do - - read_tty "Escolha [1/2/3]: " OPTION - - - case "$OPTION" in - - - # ==================================================== - # DHCP - # ==================================================== - - 1) - - cat >> /etc/network/interfaces <> /etc/network/interfaces <> /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 - ;; - - - # ==================================================== - # NÃO CONFIGURAR - # ==================================================== - - 3) - - echo - echo "$IFACE não será configurada." - - break - ;; - - - # ==================================================== - # INVÁLIDO - # ==================================================== - - *) - - echo - echo "Opção inválida. Escolha 1, 2 ou 3." - ;; - - esac - - done - -done - - -# ============================================================ -# PERMISSÃO DO ARQUIVO -# ============================================================ - -chmod 644 /etc/network/interfaces - - -# ============================================================ -# MOSTRA RESULTADO -# ============================================================ - -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 "------------------------------------------------------------" -echo +read_tty "Pressione ENTER para limpar o histórico e desligar..." FINAL_CONFIRM # ============================================================ -# CONFIRMA FINALIZAÇÃO -# ============================================================ - -echo -echo "A configuração foi concluída." -echo -echo "A máquina será desligada ao final da limpeza." -echo - -read_tty "Pressione ENTER para finalizar e desligar..." FINAL_CONFIRM - - -# ============================================================ -# LIMPEZA DE HISTÓRICO +# LIMPEZA DO HISTÓRICO # ============================================================ echo echo "Limpando históricos..." -# ============================================================ -# ROOT -# ============================================================ - +# Root history -c 2>/dev/null || true rm -f /root/.bash_history @@ -629,10 +197,7 @@ rm -f /root/.lesshst rm -f /root/.wget-hsts -# ============================================================ -# USUÁRIOS NORMAIS -# ============================================================ - +# Usuários normais while IFS=: read -r \ USERNAME \ PASSWORD_FIELD \ @@ -659,51 +224,29 @@ do done < /etc/passwd -# ============================================================ -# LIMPA HISTÓRICO DA SESSÃO ATUAL -# ============================================================ - +# Evita regravar o histórico desta sessão history -c 2>/dev/null || true - unset HISTFILE - export HISTFILE=/dev/null # ============================================================ -# SINCRONIZA DISCO +# FINALIZA # ============================================================ sync - -# ============================================================ -# FINALIZAÇÃO -# ============================================================ - echo echo "============================================================" echo " CONFIGURAÇÃO CONCLUÍDA" echo "============================================================" echo echo "Hostname : $NEW_HOSTNAME" -echo "Domínio : $NEW_DOMAIN" echo "FQDN : $FQDN" echo -echo "Rede configurada em:" -echo "/etc/network/interfaces" -echo -echo "Históricos removidos." -echo echo "Desligando a máquina..." echo - sleep 3 - -# ============================================================ -# DESLIGA A VM -# ============================================================ - systemctl poweroff \ No newline at end of file