Come faccio ad aprire una cartella della barra laterale del Finder tramite AppleScript?
-
11-07-2019 - |
Domanda
Ho uno script bash che verrà eseguito su un Mac tramite ssh. Lo script richiede che una particolare unità di rete sia già montata. Sul Mac, monto questa unità aprendo una cartella " JPLemme " su quell'unità nel Finder. Questo monta l'unità fino a quando il Mac non si addormenta di notte.
Ovviamente, Finder non è disponibile tramite ssh, quindi voglio creare un AppleScript che simuli ciò che faccio attraverso la GUI. Ho provato:
tell application "Finder"
activate
open "JPLemme"
end tell
Ricevo il seguente errore:
execution error: Finder got an error: Can't get "JPLemme". (-1728)
Presumo che mi manchi qualcosa di ovvio, ma Google mi ha deluso. Sarei anche disposto a trovare soluzioni migliori come il montaggio diretto dell'unità; Ho evitato questo approccio perché non voglio che il Mac si strozzasse cercando di montare l'unità una seconda volta dopo averlo già montato in modo inaspettato. (Non mi piacciono molto i Mac o AppleScript ...)
Soluzione
Il volume della tua rete dovrebbe avere un dominio ad esso collegato in qualche modo. Pertanto, " JPLemme.domain.com " ;. Uso il seguente blocco di codice per accedere a un volume di rete protetto da password:
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
Puoi pulirlo se necessario, ma questo è il nocciolo di esso. Buona fortuna
Altri suggerimenti
Alla base, tutto ciò che è veramente necessario è il seguente:
Tell Application "Finder"
Mount Volume "smb://username:password@server/sub/directory"
End Tell
Ma ciò che verrà utilizzato dipenderà in gran parte dall'ambiente di rete e dagli errori restituiti.