76
Software de Meteoclimatic / Re:Posibilidad Aviso falta de subida de datos
« en: 20 de Agosto del 2019, 11:54:54 am »
Y ahora con 4 ejecuciones seguidas
Foro exclusivo para soporte técnico de las estaciones de la red Meteoclimatic
¿Conoces Codex Meteoclimatic? La Wiki de Meteoclimatic
http://wiki.meteoclimatic.net
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Primeramente debemos de guardar la contraseña cifrada de nuestro correo en un archivo para que haga uso el script para la autenticación. Es mejor esto que poner usuario y contraseña en texto simple en nuestro script. Para ello abrimos Powershell (en W10 Inicio, clic derecho del ratón y Powershell) y copiamos esta línea:
'Password' | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString | Out-File 'C:\Users\miusuario\Documents\passwd.txt'
Antes de darle a enter para que la ejecute tenemos que poner al principio en 'Password' la contraseña de nuestro correo electrónico con el que vamos a enviar los correos. Siempre entre comillas. Al final vemos que también hay unas comillas para la dirección local donde se guardará el archivo con la contraseña cifrada. En el ejemplo he puesto que sea en Documentos del usuario (hay que poner qué usuario es), pero se puede cambiar la ubicación para crear el archivo y poner el nombre de archivo que se quiera (no es obligatorio que se llame passwd.txt)
Cuando lo ejecutemos vamos a esa ruta a ver si lo ha creado. En su interior habrá una serie de números/letras muy larga.
Ahora ponemos el script que pongo en el zip adjunto donde queramos (mejor si puede ser en Mis Documentos) y lo abrimos con el bloc de notas mismo para editarlo.
Al inicio es donde salen las opciones de configuración que no son muchas. Hay unos comentarios que ya dicen de qué se trata y qué hay que ir poniendo.
Hay que poner la ruta local de la plantilla que se envía a meteoclimatic, el usuario que envía y la ruta del archivo de la contraseña anteriormente generada (en $File=)
La última línea de la configuración está comentada (#[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}). Si usamos un servidor SMTP que no dé un certificado válido como puede ser uno autofirmado) pero que es de nuestra confianza (puede ser el correo de nuestro dominio) se descomenta para que pueda estar habilitado.
Ahora vamos con el Programador de Tareas. Entramos en él y seguimos estos pasos:
Le damos en la barra de la derecha a "Crear Tarea" con lo que se nos abrirá una nueva ventana.
En nombre le ponemos el nombre que le queramos dar (por ejemplo plantilla_meteoclimatic) y en la parte de abajo marcamos Ejecutar tanto si el usuario inició sesión como si no. También marcamos la casilla siguiente No almacenar contraseña etc y la siguiente Ejecutar con los privilegios más altos.
Eso es en la primera pestaña General. Ahora vamos a la de al lado Desencadenadores y le damos a Nuevo. Veremos que hay dos cajetines arriba con fecha y hora. En la hora ponemos 0:01:30. Con eso nos aseguramos de que no leerá la plantilla siendo escrita. Después abajo marcamos Repetir cada y se activarán las opciones de su derecha. Ponemos en la de al lado cada 15 minutos y en la de más a la derecha Durante: elegimos Indefinidamente. Le damos por último a Aceptar.
Ahora vamos a la pestaña de al lado y última por configurar Acciones. Le damos a Nueva. En Acción dejamos lo de Iniciar un programa. En Programa o script ponemos Powershell y en Agregar argumentos (opcional) ponemos esto:
-ExecutionPolicy Bypass -File "C:\ruta local donde está el script de powershell\correoplantilla.ps1"
Cambiar lo de ruta local etc por la ruta verdadera local donde hayamos puesto el script.
Ya podemos aceptarlo todo y que se quede funcionando. Para comprobar que funciona ahí mismo en el Programador de Tareas y marcando la tarea que acabamos de crear en la parte derecha le damos a Ejecutar. Ahora nos vamos a Mis Documentos y vemos si ha creado una carpeta llamada plantilla_meteoclimatic con dos archivos en su interior (comp.txt y flag.txt). En comp.txt se irán comparando las plantillas leídas, una cada cuarto de hora, un máximo de cuatro.
Si el script detecta que las cuatro últimas plantillas leídas son exactamente iguales (no se están generando nuevas) enviará un email con el asunto "Plantilla estancada". Si lo que detecta es que hay cambio de fecha pero los demás datos son iguales enviará "Datos estancados". También adjuntará la plantilla.
El otro archivo flag.txt tendrá un número. Si es 0 es que todo marcha bien y con 1 es cuando enviará el correo. si es mayor a uno no enviará nada y significará que está la plantilla o los datos estancados. En verdad ese número es una bandera en programación para evitar que el script envíe seguidamente los correos con una plantilla estancada. Si no estamos en casa y se queda estancada en 2 horas nos habría enviado 8 emails y en un día 96 emails, así que mejor uno y vemos lo que ha pasado.
Si nos ha creado los dos archivos que he puesto podemos probar si en verdad envía el correo pulsando varias veces (hasta cuatro) en el botón Ejecutar de la tarea descrito anteriormente en el Programador de Tareas.
Las primeras veces que se ejecute el script hay que estar atentos a los antivirus o cortafuegos que podrán dar la alerta. Es en ese momento donde debemos de darle permiso al script o crear una regla de excepción.
Es un buen tocho el que he puesto y sobre todo decir que todo esto es experimental y seguirá siéndolo (así son los scripts ). Esto es cosa mía personal y no tiene nada que ver con meteoclimatic. Quien quiera probarlo es bajo su responsabilidad y riesgo (no me hago cargo si arde la CPU o se derrite la memoria RAM ).
Ya hablando en serio, no debe de ocurrir nada excepto que surjan algunos problemas de configuraciones de Windows o de cortafuegos y antivirus.
Lo mejor sería que meteoclimatic crease ese servicio pero mientras para quien quiera está este script como "workaround" como dicen los ingleses (solución alternativa).
Las dudas, problemas o comentarios se pueden seguir en este mismo hilo. Si vemos que va bien y hay una alta tasa de éxito se corta y se le pone una chincheta para tenerlo a mano.
Quizás en Windows con Powershell mismo se podría hacer algo... un script que se ejecutase cada cuarto de hora con el programador de tareas y almacenase las cuatro últimas plantillas en un archivo, las comparase y si fuesen iguales enviase un email.... lo cual no es impedimento para ver si se implementa en meteoclimatic en un día no muy muy lejano
Haré pruebas esta semana que viene y si tengo éxito pondré aquí mismo el script y qué hacer.