#!/bin/bash set -e # ============================================================ # Renomear VM Debian 13 # # - Altera hostname # - Altera domínio # - Atualiza /etc/hostname # - Atualiza /etc/hosts # - Limpa históricos # - Desliga a máquina ao final # # Compatível com: # curl -fsSL URL | bash # ============================================================ # ============================================================ # FUNÇÕES # ============================================================ read_tty() { local prompt="$1" local varname="$2" read -rp "$prompt" "$varname" < /dev/tty } valid_name() { local value="$1" [[ "$value" =~ ^[a-zA-Z0-9]([a-zA-Z0-9.-]*[a-zA-Z0-9])?$ ]] } # ============================================================ # ROOT # ============================================================ if [ "$EUID" -ne 0 ]; then echo echo "ERRO: execute este script como root." echo exit 1 fi # ============================================================ # CABEÇALHO # ============================================================ clear 2>/dev/null || true echo echo "============================================================" echo " RENOMEAR MÁQUINA - DEBIAN 13" echo "============================================================" echo # ============================================================ # HOSTNAME # ============================================================ 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_name "$NEW_HOSTNAME"; then echo "Hostname inválido." continue fi break done # ============================================================ # DOMÍNIO # ============================================================ 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_name "$NEW_DOMAIN"; then echo "Domínio inválido." continue fi break done FQDN="${NEW_HOSTNAME}.${NEW_DOMAIN}" # ============================================================ # CONFIRMAÇÃO # ============================================================ echo echo "------------------------------------------------------------" echo "Hostname : $NEW_HOSTNAME" echo "Domínio : $NEW_DOMAIN" echo "FQDN : $FQDN" echo "------------------------------------------------------------" echo read_tty "Confirmar alteração? [S/n]: " CONFIRM case "$CONFIRM" in n|N|nao|não|NAO|NÃO) echo echo "Operação cancelada." exit 0 ;; esac # ============================================================ # CONFIGURA HOSTNAME # ============================================================ echo echo "Alterando hostname..." echo "$NEW_HOSTNAME" > /etc/hostname hostnamectl set-hostname "$NEW_HOSTNAME" # ============================================================ # RECRIA /etc/hosts # ============================================================ echo "Atualizando /etc/hosts..." cat > /etc/hosts </dev/null || true rm -f /root/.bash_history rm -f /root/.zsh_history rm -f /root/.python_history rm -f /root/.lesshst rm -f /root/.wget-hsts # Usuários normais while IFS=: read -r \ USERNAME \ PASSWORD_FIELD \ USER_ID \ GROUP_ID \ GECOS \ HOME_DIR \ USER_SHELL do if [ "$USER_ID" -ge 1000 ] 2>/dev/null && [ "$USER_ID" -lt 65534 ] 2>/dev/null && [ -d "$HOME_DIR" ]; then rm -f "$HOME_DIR/.bash_history" rm -f "$HOME_DIR/.zsh_history" rm -f "$HOME_DIR/.python_history" rm -f "$HOME_DIR/.lesshst" rm -f "$HOME_DIR/.wget-hsts" fi done < /etc/passwd # Evita regravar o histórico desta sessão history -c 2>/dev/null || true unset HISTFILE export HISTFILE=/dev/null # ============================================================ # FINALIZA # ============================================================ sync echo echo "============================================================" echo " CONFIGURAÇÃO CONCLUÍDA" echo "============================================================" echo echo "Hostname : $NEW_HOSTNAME" echo "FQDN : $FQDN" echo echo "Desligando a máquina..." echo sleep 3 systemctl poweroff