62 lines
2.1 KiB
Bash
Executable File
62 lines
2.1 KiB
Bash
Executable File
#!/bin/bash
|
||
# Script: alta_nodo.sh
|
||
# Uso: ./scripts/alta_nodo.sh <IP> <HOSTNAME> [USUARIO]
|
||
# Descripción: Automatiza la configuración SSH local y el despliegue de claves al nuevo nodo.
|
||
|
||
IP=$1
|
||
NAME=$2
|
||
USER_SSH=${3:-rmonla} # Por defecto usa 'rmonla' si no se especifica
|
||
|
||
# Validar argumentos básicos
|
||
if [ -z "$IP" ] || [ -z "$NAME" ]; then
|
||
echo "❌ Error: Faltan argumentos."
|
||
echo "Uso correcto: ./scripts/alta_nodo.sh <IP> <HOSTNAME> [USUARIO]"
|
||
echo "Ejemplo: ./scripts/alta_nodo.sh 10.0.10.205 srv-pmox4 rmonla"
|
||
exit 1
|
||
fi
|
||
|
||
echo "--- Iniciando Alta de Nodo: $NAME ($IP) con Usuario: $USER_SSH ---"
|
||
|
||
# 1. Configurar SSH local (~/.ssh/config)
|
||
if grep -q "^Host $NAME$" ~/.ssh/config; then
|
||
echo "ℹ️ Host '$NAME' ya existe en ~/.ssh/config (Se asume configuración correcta)."
|
||
else
|
||
echo "🔧 Agregando '$NAME' a ~/.ssh/config..."
|
||
cat >> ~/.ssh/config <<EOF
|
||
|
||
Host $NAME
|
||
HostName $IP
|
||
User $USER_SSH
|
||
StrictHostKeyChecking no
|
||
EOF
|
||
fi
|
||
|
||
# 2. Verificar Conectividad
|
||
echo "📡 Verificando conexión (Ping)..."
|
||
ping -c 2 $IP > /dev/null
|
||
if [ $? -ne 0 ]; then
|
||
echo "⚠️ Alerta: No hay ping a $IP. Verifica la red."
|
||
else
|
||
echo "✅ Ping exitoso."
|
||
fi
|
||
|
||
# 3. Intentar instalación automática de clave (ssh-copy-id)
|
||
echo "🔑 Intentando instalar clave SSH automáticamente en $USER_SSH@$IP..."
|
||
ssh-copy-id -o ConnectTimeout=5 -i ~/.ssh/id_rsa.pub $USER_SSH@$IP 2>/dev/null
|
||
|
||
if [ $? -eq 0 ]; then
|
||
echo "✅ Clave instalada exitosamente via ssh-copy-id."
|
||
echo "🚀 Probando conexión SSH..."
|
||
ssh -o ConnectTimeout=5 $NAME "uptime"
|
||
else
|
||
echo "⚠️ No se pudo copiar la clave automáticamente."
|
||
echo "Probablemente necesites ingresar la contraseña de '$USER_SSH' si te la pide."
|
||
echo ""
|
||
echo "📋 SI FALLA, EJECUTA ESTO MANUALMENTE EN LA TERMINAL DEL NODO ($IP) con tu usuario:"
|
||
echo "-----------------------------------------------------------"
|
||
# Generamos el comando dinámicamente con la clave actual
|
||
PUBKEY=$(cat ~/.ssh/id_rsa.pub)
|
||
echo "mkdir -p ~/.ssh && echo \"$PUBKEY\" >> ~/.ssh/authorized_keys"
|
||
echo "-----------------------------------------------------------"
|
||
fi
|