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.