0 votos

Comprobar automáticamente si una unidad está montada

Me gustaría automatizar las copias de seguridad de mi familia, concretamente me gustaría ejecutar un shell script (con rsync ) cuando un unidad externa está conectado.

Como es una cosa de familia, debería ser también una especie de GUI impulsado, tal vez un icono como el de Dropbox. Probablemente un shell script con fswatch no es muy agradable para jugar, probablemente se quejarán y seguramente no entenderán si se produce un error.

Estaba pensando en Automator o AppleScript (ya tengo la GUI para la copia de seguridad script en AppleScript, pero no la automatización), ya que "Folder Actions" no está disponible para /Volumes pero cualquier otra solución es más que bienvenida.

¿Alguna sugerencia?

0 votos

En realidad, un acción de la carpeta en el /Volumes es exactamente como yo lo haría, y lo logré con éxito para los propósitos de esta respuesta aquí . Contiene instrucciones sobre cómo configurar una acción de carpeta para /Volumes . Si quieres que te proporcione una respuesta específica para tu pregunta, puedo intentar hacerlo por ti, o simplemente puedes seguir mi guía de la otra respuesta y adaptarla a tu caso de uso específico.

0 votos

La otra forma de controlar la carpeta sería a través de un launchd plist, que puede ejecutar un AppleScript para realizar el proceso de copia de seguridad si la unidad que desencadena el AppleScript es la correcta (similar a la acción de la carpeta en este sentido).

1voto

Darth_Vader Puntos 138

Yo siempre he hecho el mío basado en el inicio de sesión del usuario. Usted iría a Usuarios y grupos haga clic en el usuario actual vaya a Elementos de inicio de sesión pulsa el icono del plus en la parte inferior y podrás añadirlo allí. Construí una aplicación similar para detectar mi NAS y montarlo si no está montado:

enter image description here

Código de ejemplo, no probado:

on run
    tell application "System Events" to set theDisks to name of every disk
    set theNAS to "Shared" ## Change here to name
    set isMounted to false
    if theNAS is in theDisks then set isMounted to true
    if isMounted = false then mount volume "afp://" & theNAS
end run

Algunos enlaces para montar:

Se puede hacer a través de un LaunchAgent aquí hay algunos recursos:

Hay otros enfoques como un launchd pero sacrificarás la RAM para que pueda comprobarlo. Creo que en el inicio de sesión sería su mejor enfoque.

1 votos

Un AppleScript equivalente recortado sería tell app "System Events" to if theNAS is in the name of every disk then mount volume "afp://" & theNAS más una línea anterior para declarar la variable theNAS . La introducción de un isMounted parece muy verbosa, y normalmente sólo sirve para ayudar a la legibilidad de un script, pero parece hacer lo contrario aquí. También recomendaría no publicar código no probado, aunque en este caso, tu cerebro de scripting lo clavó con éxito.

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