Cómo montar y nombrar un volumen si aún no está montado con un script de inicio

Estoy tratando de hacer algo que pensé que sería simple, pero después de investigarlo, siento que estoy a medio camino de afeitarme un yak , así que pido consejo. Quiero crear una secuencia de comandos que nos permita a mis colegas y a mí realizar búsquedas normales de Spotlight en un disco compartido, lo que, según la investigación, parece no ser fácil y se resuelve mejor con una secuencia de comandos que:

Las partes en negrita son las partes con las que tengo problemas.


Problemas particulares que estoy teniendo:

  • Encontré una forma de AppleScript para montar una unidad si aún no está montada , compruébelo name of every diskentonces mount volume "path://to/volume", pero no me permite especificar el nombre, y soy cauteloso acerca de la coherencia con la que Mac nombrará automáticamente una ruta en un unidad compartida que no es de Mac. Quiero configurar el nombre del volumen para poder consultarlo cuando le diga a Spotlight qué volumen indexar, lo que parece imposible en AppleScript.
  • Encontré una forma de script de shell para montar una unidad en un volumen específico , pero leí (no puedo encontrar la fuente ahora, la estoy buscando) que el volumen ya debe existir, lo que me confunde (¿necesito crear un volumen vacío? No entiendo muy bien lo que sería un volumen vacío); y no puedo ver cómo verificar que aún no se haya montado automáticamente.

Mi nivel de conocimiento de los volúmenes de Mac, etc. es bastante bajo, por lo que soy consciente de que puede haber entendido mal alguno de los anteriores.

Ahora veo algunos ejemplos de AppleScript mountque parecen usarse & nameVarpara establecer el nombre, pero esto parece contradecir lo que he leído en otros lugares, por ejemplo, hints.macworld.com/article.php?story=20120211184732735

Respuestas (3)

OS X sigue estos pasos al montar una unidad: crea un dispositivo sin procesar en /dev/ (solo para discos locales), crea una carpeta en /Volumes/, luego monta la unidad en esa carpeta que acaba de crear. Ese paso de creación de carpetas es probablemente lo que lee. Al script de shell que vinculó le falta el siguiente comando:

mkdir /Volumes/somenetworkdir

Entonces el comando que vinculó funcionará, con los parámetros adecuados

mount -t smbfs -o username=RemoteUser //REMOTEHOST/directory /Volumes/somenetworkdir
Entonces, ¿puedo verificar si el volumen ya existe verificando si el directorio ya existe en Volúmenes? ¿Confiar en que cuando no esté montado se quitará? ¿O no es tan simple?
OS X eliminará el directorio cuando desmonte la unidad, sí. El único momento en el que puede no ser así es si el sistema se apaga incorrectamente, lo que impide que elimine el directorio de forma normal.
puede intentar ejecutar "rmdir /Volumes/somenetworkdir" primero si quiere estar seguro de que el directorio no está allí cuando se ejecuta el script, ¡aunque verifique primero para que no falle! O simplemente verifique la existencia del directorio antes de ejecutar mkdir. Eso es probablemente ideal.
set mountedVolumes to do shell script "ls /Volumes/"

if (mountedVolumes contains "thisDriveName") is false then

        mount volume "afp://thisUsername:thisPassword@thisIPorHostname/thisDriveName"

end if

Puede verificar si un volumen está montado al verificar la salida del mountcomando:

mount | grep '/Volumes/SomeVolumeName'

Y puedes montarlo con open smb://.... Por lo que su secuencia de comandos podría ser algo como esto

#!/bin/bash

server=my_server
share=SomeShare
user=my_username
pass=y_password

# ...

mount | grep -q "/Volumes/$share " || open smb://$user:$pass@$server/$share

# ...

El open smb://...comando lo montará bajo el nombre del recurso compartido.