Commit 37a8c51b authored by Guillermo Sanz López's avatar Guillermo Sanz López
Browse files

new sctipt for ubuntu

parent 0fb3e258
Loading
Loading
Loading
Loading
+66 −0
Original line number Diff line number Diff line
#!/bin/bash

set -e  # Detener la ejecución si ocurre un error

# Función para manejar errores
handle_error() {
    echo "Error en el script. Línea: $1"
    exit 1
}

# Capturar errores y llamar a la función handle_error
trap 'handle_error $LINENO' ERR

# Verificar si AWS CLI está instalado
if ! command -v aws &> /dev/null
then
    echo "AWS CLI no está instalado. Por favor, instala AWS CLI y vuelve a ejecutar el script."
    exit 1
fi

# Pedir al usuario las credenciales base (sin MFA)
read -p "Introduce tu AWS Access Key ID: " AWS_ACCESS_KEY_ID_BASE
read -s -p "Introduce tu AWS Secret Access Key: " AWS_SECRET_ACCESS_KEY_BASE
echo ""

# Exportar las credenciales base para la sesión
export AWS_ACCESS_KEY_ID="$AWS_ACCESS_KEY_ID_BASE"
export AWS_SECRET_ACCESS_KEY="$AWS_SECRET_ACCESS_KEY_BASE"

# Comprobar si las credenciales base funcionan ejecutando un comando sencillo
aws sts get-caller-identity || { echo "Error: No se pueden utilizar las credenciales base"; exit 1; }

# Pedir al usuario el ARN de MFA
read -p "Introduce el ID de cuenta de AWS (ej. 230672794366): " AWS_ACCOUNT_ID
read -p "Introduce el nombre del dispositivo MFA (ej. google_authenticator_phone): " MFA_DEVICE

MFA_ARN="arn:aws:iam::$AWS_ACCOUNT_ID:mfa/$MFA_DEVICE"

# Autenticación MFA con AWS para obtener un token temporal
read -p "Introduce el código MFA de 6 dígitos: " MFA_CODE

# Obtener un token temporal usando MFA
echo "Autenticando con AWS usando MFA..."
TEMP_CREDS=$(aws sts get-session-token --serial-number "$MFA_ARN" --token-code "$MFA_CODE" --output json)

# Verificar si se obtuvieron las credenciales temporales
if [ -z "$TEMP_CREDS" ]; then
    echo "Error: No se pudo obtener el token temporal de AWS. Verifica el código MFA."
    exit 1
fi

# Exportar credenciales temporales
export AWS_ACCESS_KEY_ID=$(echo "$TEMP_CREDS" | jq -r '.Credentials.AccessKeyId')
export AWS_SECRET_ACCESS_KEY=$(echo "$TEMP_CREDS" | jq -r '.Credentials.SecretAccessKey')
export AWS_SESSION_TOKEN=$(echo "$TEMP_CREDS" | jq -r '.Credentials.SessionToken')

# Comprobar si las credenciales temporales han sido exportadas correctamente
if [ -z "$AWS_ACCESS_KEY_ID" ] || [ -z "$AWS_SECRET_ACCESS_KEY" ] || [ -z "$AWS_SESSION_TOKEN" ]; then
    echo "Error: No se exportaron correctamente las credenciales temporales."
    exit 1
else
    echo "Credenciales temporales obtenidas y exportadas correctamente."
fi

# Comprobar si las credenciales temporales funcionan ejecutando un comando sencillo
aws sts get-caller-identity ||