¿Cómo abro una carpeta de la barra lateral del Finder a través de AppleScript?
-
11-07-2019 - |
Pregunta
Tengo un script bash que se ejecutará en una Mac a través de ssh. El script requiere que una unidad de red en particular ya esté montada. En Mac, monte esta unidad abriendo una carpeta " JPLemme " en ese disco en Finder. Esto monta el disco hasta que la Mac se duerma por la noche.
Obviamente, Finder no está disponible a través de ssh, por lo que quiero crear un AppleScript que simule lo que hago a través de la GUI. He intentado:
tell application "Finder"
activate
open "JPLemme"
end tell
Recibo el siguiente error:
execution error: Finder got an error: Can't get "JPLemme". (-1728)
Supongo que me falta algo obvio, pero Google me ha fallado. También estaría dispuesto a entretener mejores soluciones como montar el disco directamente; He evitado ese enfoque porque no quiero que la Mac se atragante al intentar montar la unidad por segunda vez después de que ya la haya montado de manera inesperada. (Realmente no me gustan las Mac o AppleScript ...)
Solución
Su volumen de red debe tener un dominio adjunto de algún tipo. Entonces, "JPLemme.domain.com". Utilizo el siguiente fragmento de código para acceder a un volumen de red que está protegido con contraseña:
tell application "Finder"
try
set theServer to mount volume "smb://path/to/volume" as username "YourUserName" with password "YourPassword"
--Please note here that this is a plain string without any built-in security. Use at your own risk.
on error
set VolumeCount to (get count of disks)
repeat with x from 1 to VolumeCount
set thisVolume to disk x
if name of thisVolume is "JPLemme" then
set theServer to thisVolume
exit repeat
end if
end repeat
end try
end tell
Puede limpiarlo según sea necesario, pero ese es el núcleo de la misma. Buena suerte
Otros consejos
En esencia, todo lo que realmente se necesita es lo siguiente:
Tell Application "Finder"
Mount Volume "smb://username:password@server/sub/directory"
End Tell
Pero lo que se use dependerá en gran medida del entorno de red y los errores devueltos.