Comment ouvrir un dossier de la barre latérale du Finder via AppleScript?
-
11-07-2019 - |
Question
J'ai un script bash qui sera exécuté sur un Mac via ssh. Le script nécessite qu'un lecteur réseau particulier soit déjà monté. Sur le Mac, je monte ce lecteur en ouvrant un dossier "JPLemme". sur ce lecteur dans le Finder. Cela permet de monter le lecteur jusqu'à ce que le Mac s'endorme la nuit.
Évidemment, le Finder n’est pas disponible via ssh, je souhaite donc créer un AppleScript qui simule ce que je fais via l’interface graphique. J'ai essayé:
tell application "Finder"
activate
open "JPLemme"
end tell
Je reçois le message d'erreur suivant:
execution error: Finder got an error: Can't get "JPLemme". (-1728)
Je suppose qu'il me manque quelque chose d'évident, mais Google m'a échoué. Je serais également disposé à envisager de meilleures solutions, telles que le montage direct du disque; J'ai évité cette approche car je ne veux pas que le Mac s'étouffe en essayant de monter le disque une seconde fois après l'avoir déjà monté de manière inattendue. (Je n'aime pas trop les Macs ou AppleScript ...)
La solution
Un nom de domaine doit être associé à votre volume réseau. Ainsi, "JPLemme.domain.com". J'utilise le bloc de code suivant pour accéder à un volume réseau protégé par mot de passe:
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
Vous pouvez le nettoyer si nécessaire, mais c'est le cœur du problème. Bonne chance
Autres conseils
À la base, tout ce qui est vraiment nécessaire est le suivant:
Tell Application "Finder"
Mount Volume "smb://username:password@server/sub/directory"
End Tell
Mais ce qui sera utilisé dépendra en grande partie de l'environnement réseau et des erreurs renvoyées.