2008-11-25 7 views
4

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 monte le disque jusqu'à ce que le Mac se couche la nuit.Comment ouvrir un dossier de la barre latérale Finder via AppleScript?

Évidemment, le Finder n'est pas disponible via ssh, je veux donc créer un AppleScript qui va simuler ce que je fais via l'interface graphique. J'ai essayé:

tell application "Finder" 
activate 
open "JPLemme" 
end tell 

Je reçois l'erreur suivante:

execution error: Finder got an error: Can't get "JPLemme". (-1728) 

Je suppose que je manque quelque chose d'évident, mais Google m'a échoué. Je serais également prêt à divertir de meilleures solutions comme le montage du disque directement; J'ai évité cette approche parce que 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é d'une manière inattendue. (Je n'aime pas vraiment Macs ou AppleScript ...)

Répondre

2

Votre volume réseau devrait avoir un domaine attaché à lui. Donc, "JPLemme.domain.com". J'utilise le morceau suivant de code pour obtenir sur un volume réseau qui est protégé par mot:

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 nettoyer au besoin, mais c'est le cœur de celui-ci. Bonne chance

1

A il est très central, tout ce qui est vraiment nécessaire est la suivante:

Tell Application "Finder" 
    Mount Volume "smb://username:[email protected]/sub/directory" 
End Tell 

Mais ce qui est utilisé dépendra en grande partie sur l'environnement du réseau et des erreurs de retour.

Questions connexes