elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [APORTE] [Bash] (Linux) VMWare: Montar / Desmontar 'Shared Folders'
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [APORTE] [Bash] (Linux) VMWare: Montar / Desmontar 'Shared Folders'  (Leído 177 veces)
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.929



Ver Perfil
[APORTE] [Bash] (Linux) VMWare: Montar / Desmontar 'Shared Folders'
« en: 4 Junio 2025, 21:09 pm »

Los siguientes dos scripts, desarrollados en el lenguaje Bash, y que se deben usar bajo un sistema operativo Linux en una máquina virtual de VMWare (aunque se pueden modificar para Virtual Box), sirven como atajo para montar y desmontar las "carpetas compartidas" (shared folders) de forma sencilla.

Utilizar estos scripts nos ahorra un valioso tiempo al no tener que usar comandos específicos en la distro de Linux para llevar a cabo el montaje de las carpetas compartidas de VMWare y de forma repetitiva (ya que el montaje no es persistente).

La idea tras esta simple herramienta es eso, ahorrar tiempo, y de esta manera, mediante el script de desmontaje, poder aislar la máquina virtual del sistema operativo anfitrión impidiendo el acceso a las carpetas compartidas, y volver a habilitar el acceso, tan solo haciendo dos clicks para ejecutar estos scripts.

 

Estos scripts son un equivalente de estos otros para Windows:

  — Tema: [APORTE] [VBS] VMWare: Mount / Unmount Shared Folders Network Drive

Sin embargo, en esta ocasión estos scripts que comparto están programados en el idioma español, e incluyen emojis. Para ser honestos yo no tengo experiencia con Bash, así que básicamente lo ha hecho casi todo ChatGPT, yo solo le di unas pinceladas.

Mount_VMWare_Shared_Folders.sh
Código:
#!/bin/bash

# Carpeta a montar: VMWare Shared Folders (".host:/" = todas las carpetas)
# Destino: "/mnt/shared_folders"
MOUNT_SOURCE=".host:/"
MOUNT_DESTINATION="/mnt/shared_folders"

# =========================================
# Montar las carpetas compartidas de VMWare
# =========================================

# Crear /mnt/shared_folders si no existe
if [ ! -d "$MOUNT_DESTINATION" ]; then
    echo "📂 Creando carpeta $MOUNT_DESTINATION... 🔥"
    sudo mkdir -p "$MOUNT_DESTINATION"
fi

# Verificar si ya está montado en /mnt/shared_folders
if mountpoint -q "$MOUNT_DESTINATION"; then
    echo "⚠️ $MOUNT_DESTINATION ya está montado."
else
    echo "🔗 Montando carpeta compartida VMWare en $MOUNT_DESTINATION..."
    sudo vmhgfs-fuse "$MOUNT_SOURCE" "$MOUNT_DESTINATION" -o allow_other
    if [ $? -ne 0 ]; then
        echo "❌ Error montando la carpeta compartida. Abortando... 💔"
        exit 1
    fi
    echo "✅ Montaje exitoso de carpeta compartida VMWare en $MOUNT_DESTINATION."
fi

# ====================================================================
# Crear enlace simbólico de las carpetas compartidas, en el escritorio
# ====================================================================

# Detectar ruta del escritorio usando user-dirs.dirs (XDG estándar)
DESKTOP_DIR=""

# Leer archivo de configuración XDG si existe
if [ -f "$HOME/.config/user-dirs.dirs" ]; then
    DESKTOP_DIR=$(grep XDG_DESKTOP_DIR "$HOME/.config/user-dirs.dirs" | cut -d= -f2 | tr -d \")
fi

# Si no lo encontró o está vacío, probar las carpetas comunes
if [ -z "$DESKTOP_DIR" ]; then
    if [ -d "$HOME/Desktop" ]; then
        DESKTOP_DIR="$HOME/Desktop"
    elif [ -d "$HOME/Escritorio" ]; then
        DESKTOP_DIR="$HOME/Escritorio"
    else
        echo "⚠️ No se pudo detectar la ubicación de la carpeta Desktop / Escritorio. Abortando... 😢"
        exit 1
    fi
else
    # Eliminar $HOME si está en la ruta para expandirla bien
    DESKTOP_DIR="${DESKTOP_DIR/#\$HOME/$HOME}"
fi

# Definir origen y destino
LINK_DESTINATION="$DESKTOP_DIR/VMWare Shared Folders"

# Crear enlace simbólico solo si no existe ya.
if [ -L "$LINK_DESTINATION" ] || [ -e "$LINK_DESTINATION" ]; then
    echo "⚠️ El enlace o archivo '$LINK_DESTINATION' ya existe. No se creará un nuevo enlace."
else
    ln -s "$MOUNT_DESTINATION" "$LINK_DESTINATION"
    echo "✅ Enlace simbólico creado en: $LINK_DESTINATION 🎉"
fi

echo -e "\n🏁 Operación finalizada."

Dismount_VMWare_Shared_Folders.sh
Código:
#!/bin/bash

# Ruta de montaje de las carpetas compartidas de VMware
MOUNT_DESTINATION="/mnt/shared_folders"

echo "🔍 Verificando si está montado $MOUNT_DESTINATION..."

if mountpoint -q "$MOUNT_DESTINATION"; then
    echo "📤 Desmontando carpeta compartida de VMware de: $MOUNT_DESTINATION..."
    sudo umount "$MOUNT_DESTINATION"
    if [ $? -eq 0 ]; then
        echo "✅ Carpeta compartida desmontada correctamente. 🎉"
    else
        echo "❌ Error al desmontar $MOUNT_DESTINATION. ¿Está en uso? 💔"
        exit 1
    fi
else
    echo "⚠️ $MOUNT_DESTINATION no está montado actualmente."
    if [ -d "$MOUNT_DESTINATION" ]; then
        echo "ℹ️ La carpeta existe, pero no contiene un punto de montaje activo."
    else
        echo "🚫 La carpeta $MOUNT_DESTINATION no existe."
    fi
fi

echo -e "\n🏁 Operación finalizada."

PD: parece que SMF no se lleva bien con los emojis, pierden el formato al usar la etiqueta "Bash" en el bloque de código.


« Última modificación: 4 Junio 2025, 21:13 pm por Eleкtro » En línea



Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines