252 lines
5.2 KiB
Bash
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 |