Files
2026-09-15 19:55:18 +00:00

252 lines
5.2 KiB
Bash

#!/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 <<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
# ============================================================
# RESULTADO
# ============================================================
echo
echo "============================================================"
echo " NOVA CONFIGURAÇÃO"
echo "============================================================"
echo
echo "Hostname : $NEW_HOSTNAME"
echo "Domínio : $NEW_DOMAIN"
echo "FQDN : $FQDN"
echo
read_tty "Pressione ENTER para limpar o histórico e desligar..." FINAL_CONFIRM
# ============================================================
# LIMPEZA DO HISTÓRICO
# ============================================================
echo
echo "Limpando históricos..."
# Root
history -c 2>/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