1 votos

¿Cómo puedo montar automáticamente una unidad de red (Parallels OneDrive) en un bash script?

Tengo Parallels instalado en un Mac M1. En Parallels, tengo una VM de Windows 11 Pro. Parallels está configurado para compartir archivos de Windows con MacOS.

Esto se hace a través de la pestaña Red del Finder.

Por lo tanto, para montar el OneDrive de Windows en MacOS, necesito:

  • Abre el Finder.
  • Haga clic en el icono Red de la barra lateral.
  • Haga clic en Windows 11 .
  • Haga clic en [OneDrive] Windows 11 .

Tengo un bash script en MacOS que modifica algunos archivos en el OneDrive de Windows.

Cuando hago los pasos anteriores, el OneDrive de Windows se monta en "/Volumes/[OneDrive] Windows 11/imports"

Sin embargo, si pongo la VM Parallels en reposo y luego la despierto, tengo que abrir manualmente Finder y hacer clic a través de los pasos para montar OneDrive de nuevo.

¿Existe alguna forma de montar automáticamente OneDrive en Windows en Parallels (una unidad de red que siempre está en el mismo lugar) desde dentro de un script bash para que pueda ejecutar el script en lugar de montar manualmente la unidad cada vez?

Red en Buscador

Network in finder

Después de hacer clic en Windows 11

after clicking on Windows 11

1voto

Douglas Puntos 10417

Comprueba la disponibilidad de acciones en tu script.

En lugar de montar manualmente el recurso compartido a través de finder, simplemente hágalo a través de script. Sólo requerirá dos pasos:

  1. Comprobar si el recurso compartido ya está montado
  2. Si no está montado, móntelo.

Este post existente describe el montaje de un recurso compartido a través de la línea de comandos . Usaremos esta información en tu script para montar manualmente el recurso compartido si no está montado. He creado un snippit que comprueba si el volumen existe y es escribible luego monta el volumen si es necesario

   # This should go somewhere below your she-bang and 
   # other CONST/VAR declarations

   # CONST VAR Declarations
   mount_point=“/Volumes/Foo/Bar” 
   server_uri=“//usr:pass@hostname/sharename” 

   # Check if mount point exists and is writable
   if ! [[ -w “${mount_point}” && -d “${mount_point}” ]]
   then
       mount -t smbfs “${server_uri}” “${mount_point}”
   else
       printf “%s already mounted.\n” “${mount_point}” 
   fi

   ### Rest of your code goes here….

En el código

  • Condicional -w comprueba si el objetivo es escriturable
  • Condicional -d comprueba si el objetivo es un directorio
  • Condicional ! que precede a los corchetes dobles [[ ]] niega la expresión (en otras palabras, if NOT a directory and writable… )
  • Las variables se referencian con llaves ${} para garantizar una expansión adecuada
  • Las variables se entrecomillan para manejar los caracteres de espacio en blanco

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X