J'ai tenté de répondre à cette question plus tôt dans la journée, mais j'ai finalement réalisé que j'avais complètement déformé ce que j'essayais de demander et que j'avais également posté le mauvais code script. Voici donc la deuxième tentative.
J'ai deux Macs qui redémarrent automatiquement tôt chaque matin afin que leurs différents services fonctionnent de manière optimale. Chaque Mac doit monter un volume sur l'autre après le démarrage. C'est assez facile à faire, sauf dans le cas où une machine se bloque pendant le redémarrage pour une raison quelconque.
Si l'une des machines est indisponible lorsque l'autre démarre, alors évidemment sa tentative de monter la machine indisponible échouera. Le script est conçu pour s'exécuter toutes les minutes environ en boucle tant que le volume distant n'a pas été monté, puisqu'il finira par se monter. Mais lorsque le montage échoue, il produit un dialogue d'erreur sur la machine qui tente d'effectuer le montage, ce qui interrompt alors la boucle et le script ne se répète pas.
Existe-t-il un moyen dans AppleScript de tenter de monter un serveur, mais sans boîte de dialogue d'erreur si ce serveur est indisponible pour le moment ?
Je pensais que c'était l'objectif principal des blocs d'essai, mais cela n'a fait aucune différence.
Voici le script que j'exécute actuellement au démarrage (c'est une application Automator). Le flux de travail est un bloc Get Specified Server, suivi d'un bloc Run AppleScript. Voici l'AppleScript :
on run {input, parameters}
try
set server to (item 1 of input) -- this gets the server address from the Get Specified Servers block
end try
set vol to "Streaming"
tell application "Finder"
set isConnected to disk vol exists
end tell
repeat while isConnected = false -- as long as the volume is not present, try to mount it
try
tell application "Finder"
mount volume server & "/" & vol -- This produces the error dialog and halts the script, if the server is unavailable
end tell
end try
delay 2
tell application "Finder"
set isConnected to disk vol exists
end tell
if isConnected = false then
delay 60 -- if the volume still doesn't exist, wait a minute before trying again
end if
end repeat
return input
end run
Tout fonctionne parfaitement tant que le volume à distance est prêt et accessible. Mais dans le cas contraire, la boîte de dialogue d'erreur apparaît.
Edit : J'ai trouvé ce fil y ce fil de discussion assez compliqué ailleurs qui tentent de résoudre le même problème, mais aucune solution simple et définitive ne semble avoir été trouvée.