Jump to content
Sign in to follow this  
ion_sc

Ayuda con Script o proceso Automator

Recommended Posts

Buenas tardes,

Tengo un mac-mini que utilizo para la recopilación de datos de una estación metereológica.

Cada 10  minutos, una aplicación se conecta a la consola y descarga los datos de esta. Es problema es que a veces este programa se cierra inesperadamente y los datos dejan de actualizarse. Como imaginarás este siempre pasa cuando estoy fuera de casa o de viaje.

Por eso, he estado viendo las opciones de Automator para reiniciar el programa en caso de fallo, pero no consigo que funcione, por eso necesito un poco de ayuda.

No se cual es la mejor opción para hacerlo, si con Automator o hacer un Script... la verdad que estoy un poco perdido. Lo que necesito es lo siguiente:

Tengo una carpeta llamada "Meteo" que es donde se guardan todos los archivos
Aquí, entre otros, tengo un archivo que se llama download.txt, que en teoria se actualiza cada 10 minutos.

Quiero que:

  1. Monitorizar el archivo download.txt
  2. Si la última vez que se actualizó es mayor de 30 minutos:
    1. Forzar el reinicio de la aplicación Weatherlink
    2. Esperar 1 minuto
    3. Iniciar la aplicación Weaterlink

 

Espero que alguien pueda ayudarme, no parece que sea complicado, pero no se como hacerlo.

Muchas gracias!!

Share this post


Link to post
Share on other sites

He hecho un script que hace lo solicitado.

property aplic_Meteo : "Weatherlink"
property arxiu_Meteo : POSIX file "/la_direccion/download.txt"
property minuts_comprova : 20 --minutos en comprobar

on idle
	
	set hora_actual to current date
	tell application "Finder"
		set hora_arxiu to modification date of item arxiu_Meteo
	end tell
	
	if (hora_arxiu + 60 * 30) is less than hora_actual then
		tell application aplic_Meteo to quit
		delay 60
		tell application aplic_Meteo to run
	end if
	
	return 60 * minuts_comprova
	
end idle

Observaciones:

  • Copiarlo en el Editor de Scripts y exportarlo como aplicación con la opción de "Mantener abierto después de la ejecución"
  • Debes modificar la dirección del archivo en la segunda línea.
  • Ignoro si la aplicación Weatherlink aceptará las ordenes de "quit" y "run". Como son muy genéricas espero que si.
Edited by APB
  • Me gusta 2

Share this post


Link to post
Share on other sites
El 19/10/2019 a las 12:46, ion_sc dijo:

Buenas tardes,

Tengo un mac-mini que utilizo para la recopilación de datos de una estación metereológica.

Cada 10  minutos, una aplicación se conecta a la consola y descarga los datos de esta. Es problema es que a veces este programa se cierra inesperadamente y los datos dejan de actualizarse. Como imaginarás este siempre pasa cuando estoy fuera de casa o de viaje.

Por eso, he estado viendo las opciones de Automator para reiniciar el programa en caso de fallo, pero no consigo que funcione, por eso necesito un poco de ayuda.

No se cual es la mejor opción para hacerlo, si con Automator o hacer un Script... la verdad que estoy un poco perdido. Lo que necesito es lo siguiente:

Tengo una carpeta llamada "Meteo" que es donde se guardan todos los archivos
Aquí, entre otros, tengo un archivo que se llama download.txt, que en teoria se actualiza cada 10 minutos.

Quiero que:

  1. Monitorizar el archivo download.txt
  2. Si la última vez que se actualizó es mayor de 30 minutos:
    1. Forzar el reinicio de la aplicación Weatherlink
    2. Esperar 1 minuto
    3. Iniciar la aplicación Weaterlink

 

Espero que alguien pueda ayudarme, no parece que sea complicado, pero no se como hacerlo.

Muchas gracias!!

No solo te ayudan. ¡Te resuelven el problema! Qué menos que agradecer al compañero APB su respuesta. En serio, no sé qué ocurre en los últimos tiempos con la educación! Me estaré volviendo muy mayor. no entiendo nada!

Share this post


Link to post
Share on other sites

Buenos días!

Mil gracias!! he estado fuera en un viaje y por eso no había contestado. Hoy me he conectado y lo primero que hago es agradecer la ayuda.

No suelo ser de esas personas que no dan las gracias, pero no me he conectado desde el día que realicé la consulta.

Espero que APB no se haya sentido ofencido, si fuera así, lo siento.

 

Muchas gracias de nuevo!!

Share this post


Link to post
Share on other sites
Hace 2 horas, ion_sc dijo:

Espero que APB no se haya sentido ofencido,

Ni ofencido ni ofendido. 😉

Lo importante es si soluciona tu problema. 

Share this post


Link to post
Share on other sites

Buenas tardes,

he creado el script pero por algo no funciona correctamente. Si que parece que ha cerrado la aplicación cuando ha fallado pero me ha arrojado este error:

IMG_3493.PNG.b6b8b9269aa76d1d162e494f873d6f25.PNG

 

gracias!

Share this post


Link to post
Share on other sites

Prueba esto ejecutado desde el propio editor, botón triángulo.

property aplic_Meteo : "Weatherlink"

tell application aplic_Meteo to quit
delay 5
tell application aplic_Meteo to run

Debería cerrar la aplicación y abrirla 5 segundos después. Si es una aplicación lenta al cerrarse modifica el 5 por los segundos que quieras.

Si falla probablemente te especifique mejor el error.

Si funciona correctamente dime que valores has puesto en las property iniciales o copias tu script para ver si se copió algo mal.

Edited by APB
  • Me gusta 1

Share this post


Link to post
Share on other sites

Buenas tardes,

Con el último código hace bien el cerrar y abrir la aplicación, así que ya voy a verificar el código... en cualquier caso, es posible que sea por que la aplicación no está funcionando correctamete? cuando deja de actualizar es por que la aplicación "ha cascado"

 

Edited by ion_sc

Share this post


Link to post
Share on other sites

Es posible que al estar "cascada" la aplicación no acepte el quit y por eso falle.

Sustituye la instrucción "tell application aplic_Meteo to quit" del script completo por estas tres líneas:

try
      do shell script "killall " & quoted form of aplic_Meteo
      do shell script "killall UserNotificationCenter"
end try

Es una instrucción que fuerza la salida de la aplicación aunque no responda.

Confío que así si funcionará.

Edito: La he modificado para evitar un error si la aplicación está cerrada. Y comillas al nombre por si tiene espacios, daría error al usarse para separar las instrucciones.

Reedito: Añado una línea para eliminar las notificaciones existentes.

Edited by APB
  • Me gusta 1

Share this post


Link to post
Share on other sites

Buenas tardes de nuevo,

Hoy de nuevo me ha fallado la aplicación, así que he podido probar el script
 

property aplic_Meteo : "Weatherlink"

tell application aplic_Meteo to quit
delay 5
tell application aplic_Meteo to run

 

Aunque no me ha cerrado la ventana del error (como se puede ver en el archivo adjunto), si que ha reiniciado la aplicación en minimizado, por lo que no entindo por que el primer código no funciona...

Voy a insertar el nuevo código y voy comentando

Sin título.png

Share this post


Link to post
Share on other sites

ion_sc prueba con el ultimo código que te ha pasado APB 😉

PD: Me tienes enganchado a este post por ver como se te resuelve 😎

Citar

 

property aplic_Meteo : "Weatherlink"

try

do shell script "killall " & quoted form of aplic_Meteo

do shell script "killall UserNotificationCenter"

end try

delay 5

tell application aplic_Meteo to run

 

 

Edited by Hackteam

Share this post


Link to post
Share on other sites

He añadido una nueva línea que cierra la ventana de "... se ha cerrado inesperadamente". Al final la he podido probar, he recordado que tenia un script que modificándolo un poco se cerraba inesperadamente. Lo que no sé si también se borran el resto de notificaciones que se tenga hasta ese momento.

Si a pesar de la ventana de notificación el programa se reinicia correctamente y no quieres arriesgarte a perder notificaciones de otros programas no añadas "do shell script "killall UserNotificationCenter"" a tu script y así detectaras cuando el programa se ha colgado.

Edited by APB
  • Me gusta 1

Share this post


Link to post
Share on other sites

Buenas tardes,

Después de hacer y dejar el Script funcionando, el programa Weatherlink no ha vuelto a fallar. Nunca había estado tanto tiempo funcionando, así que no se si es que no ha fallado o que después de fallar el script ha actuado y se reestablece el weatherlink... lo curioso es que no está el "killall UserNotificationCenter" para que yo pudiera ver si había fallado...

Así que nada, hasta que algún dia me falle, no podré verificar al 100% el funcionamiento.

En cualquier caso, muchas gracias por la ayuda que me has proporcionado. Si tengo alguna duda volveré a escribir en el hilo.

Un saludo!

 

P.D.: Puede ser que no haya fallado por que desactivé las Acciones de Carpertas que hacía que cuando el equipo llevaba muchos días seguidos en funcionamento cascaba.

Edited by ion_sc

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.