2 votos

Me pregunto si hay una manera de deshacerse de un error en Apple script para montar el servidor

Me preguntaba si alguien podría ayudarme con esto. Perdón por la pregunta de novato. Recientemente he creado un script para montar automáticamente una imagen de Time Machine en un disco duro conectado a mi router. En su mayor parte, el script funciona muy bien. Conecta el disco cuando enciendo el ordenador y, si se desconecta por cualquier motivo, vuelve a conectarlo y monta la imagen de nuevo. Aquí está el script:

on idle
set mySSID to do shell script "/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I | awk '/ SSID/ {print substr($0, index($0, $2))}'"
set mountedDiskName to "Time Machine"
set diskIsMounted to false
if mySSID is "TALKTALK844E28" or mySSID is "TALKTALK844E285G" then
    tell application "System Events" to set diskNames to name of every disk
    if mountedDiskName is in diskNames then
        set diskIsMounted to true
    end if
    if mountedDiskName is not in diskNames then
        set diskIsMounted to false
    end if
    if diskIsMounted is false then
        mount volume "smb://192.168.1.1/"
        delay 30
        do shell script "hdiutil attach -mountpoint '/Volumes/Time Machine' /Volumes/Guille/TimeMachine.sparsebundle"
    end if
    if diskIsMounted is true then
    end if
end if
return 300
end idle

Sin embargo, de vez en cuando, me aparece este error: enter image description here

En realidad no me molesta porque si sólo hago clic en Aceptar se va y lo vuelve a intentar 5 minutos después. Sin embargo, me gustaría saber si hay una manera de asegurarse de que estos diálogos se descarten automáticamente para que no interrumpan mi flujo de trabajo y Time Machine permanezca discretamente en el fondo hasta que accidentalmente envíe algo a la papelera :-)

0 votos

Yo usaría un try declaración y probablemente lo haga junto con un on error gestor de declaraciones , atrapando así el error y evitar el mensaje de error mostrando como es actualmente. Con el uso de un on error gestor de declaraciones elegiría tener el mensaje de error en el Centro de notificaciones mediante un display notification comando ya que no requiere la interacción del usuario para descartar y es menos probable que interrumpa negativamente el flujo de trabajo, en comparación con tener que descartar manualmente el mensaje de error que está recibiendo actualmente.

0 votos

¿Por qué su awk comando utilizando un substr() función cuando awk '/ SSID/{print $2}' es todo lo que se necesita para obtener el SSID de la salida de la /S*/L*/P*/A*/V*/C*/R*/airport -I comando ?

1voto

wch1zpink Puntos 11

La verdad es que sólo soy un principiante en esto de los scripts, pero me pregunto por qué tienes tanto código en tu script. Yo pude lograr exactamente los mismos resultados con el uso de sólo un par de comandos.

mount volume "smb://192.168.2.66/"
do shell script "hdiutil attach -noverify '/Volumes/Data_Smokestack_ATC/James’s MacBook Pro.sparsebundle'"

Tengo mis dos Airport Time Capsules configuradas con direcciones IPv4 estáticas, por lo que sus IPs nunca cambian (así que siempre sé cómo conectarme a ellas si lo necesito)

La parte do shell script de mi código espera hasta que el comando de montaje de volumen se complete, por lo tanto, no necesité insertar un comando de retraso. En mi sistema que utiliza la última versión de MacOS Sierra, si ejecuto este código de nuevo mientras el volumen ya está montado, este script simplemente se completa tranquilamente sin errores ni mensajes.

Dicho esto, mi pensamiento es que ¿no sería más "eficiente" ejecutar estas dos líneas de código dentro de un bucle de repetición a intervalos de 15 minutos durante 12 o 24 horas o algo así? ¿Y luego guardarlo como una aplicación abierta?

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X