Autor Tema: Script que envía email si no detecta cambios  (Leído 6539 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado CarlosLSev

  • Sr. Member
  • ****
  • Mensajes: 272
    • Ver Perfil
    • Meteoviso
  • Estación: El Viso del Alcor- ESAND4100000041520A
Re:Script que envía email si no detecta cambios
« Respuesta #15 en: 25 de Marzo del 2021, 15:47:46 pm »
php -a es para ejecutar comandos de php en la línea de comandos.

Que no vaya en el crontab es raro. Prueba a poner */10 * * * * /usr/bin/php /var/www/html/webtest/alertalluvia.php

Pues así no funciona.
Como datos a ver si es eso.
Esto lo tengo en servidor vps de alojamiento de la web. Ubuntu 20.04.
Que no es la.raspberry

Desconectado CarlosLSev

  • Sr. Member
  • ****
  • Mensajes: 272
    • Ver Perfil
    • Meteoviso
  • Estación: El Viso del Alcor- ESAND4100000041520A
Re:Script que envía email si no detecta cambios
« Respuesta #16 en: 25 de Marzo del 2021, 15:50:04 pm »
Interesante, lo mirare y me.planteare no usar sendmail..

Como consejo.

A mi, activar cualquier mailer me da un miedo atroz. Sobre todo Sendmail, que siempre se ha caracterizado por ser un agujero de seguridad.

Os sugiero usar la mensajería de Telegram

Ya hace tiempo, en el subforo de weewx puse las instrucciones.

Yo lo tengo programado para que cada vez que mi Orange Pi o mi Raspberry Pi se reinicien, me manden un mensaje. La Orange se reinicia todos los días, y la Raspi solo cuando se necesita.

Desconectado jmviper

  • Investigación
  • Hero Member
  • ******
  • Mensajes: 4.403
  • "Vortex Complex"
    • Ver Perfil
    • www.meteoarchena.es
  • Estación: Archena - ESMUR3000000030600B
Re:Script que envía email si no detecta cambios
« Respuesta #17 en: 25 de Marzo del 2021, 16:17:57 pm »
which php y te saldrá la ruta donde está el ejecutable de php y que deberás de poner en el crontab como orden para la ejecución del script.

Todo es según el usuario que uses, el crontab que uses (básicamente hay 3) y alguna otra variable como el path.

Cómo esté eso en tu servidor, lo desconozco.





Archena, Valle de Ricote (Murcia). 120 msnm. 19.622 hab.
Davis Vantage Pro2 Plus

www.meteoarchena.es

Desconectado CarlosLSev

  • Sr. Member
  • ****
  • Mensajes: 272
    • Ver Perfil
    • Meteoviso
  • Estación: El Viso del Alcor- ESAND4100000041520A
Re:Script que envía email si no detecta cambios
« Respuesta #18 en: 27 de Marzo del 2021, 23:20:07 pm »
which php
 la respuesta es /usr/bin/php



No le demos mas vueltas, si funciona con curl...
Si lo ejecuto con crontab el email viene de root
Si lo hago desde el navegador accedieron a la url del php el email viene de www-data
Sera algo de permisos, pero como se dice en la informatica si algo funciona, mejor no lo toques

Desconectado CarlosLSev

  • Sr. Member
  • ****
  • Mensajes: 272
    • Ver Perfil
    • Meteoviso
  • Estación: El Viso del Alcor- ESAND4100000041520A
Re:Script que envía email si no detecta cambios
« Respuesta #19 en: 01 de Abril del 2021, 23:57:55 pm »
Al final indagando di con la respuesta

AL principio me dejo ejecutar desde cron tu script y luego ya no.
El script de flatline-check, por defecto tanto la ruta de realtime como el fichero cache vienen asi;
$cachefile = 'flatline-status.txt';                 // File to hold cached data for comparison
$watchfile = './clientraw.txt';                     // Data file to watch for changes
yo lo cambie a
$cachefile = 'alertarealtime.txt';                 // File to hold cached data for comparison
$watchfile = 'realtime.txt';                     // Data file to watch for changes

Si accedía con navegador a la ruta del php me funcionaba
Si lo ejecutaba por ssh con php  /var/www/html/webtest/alertalluvia.php funcionaba
Al ejecutarlo desde cron al no tener las rutas daba error y no iva al ejecutarlo con php pero al ejecutarlo con curl si
Por algún motivo cambien la rutas también en tu script y al funcionarme desde el navegador pensé mejor así. Luego me di cuenta del motivo, lo corregí y finalmente los 2 script están funcionando por cron ejecutándose por php y no con curl, cuando pueda mirarle de no hacerlo con sendmail y echare un ojo a lo de telegram.

Si lo se soy un burro harto papeles!!!!!
Pero tenia que dar con la explicacion
« Última modificación: 02 de Abril del 2021, 00:01:00 am por CarlosLSev »

Desconectado CarlosLSev

  • Sr. Member
  • ****
  • Mensajes: 272
    • Ver Perfil
    • Meteoviso
  • Estación: El Viso del Alcor- ESAND4100000041520A
Re:Script que envía email si no detecta cambios
« Respuesta #20 en: 02 de Abril del 2021, 00:31:06 am »
Umm se me olvidaba hoy he podido probar el script que me en hiciste en condiciones reales de lluvia, llovió casi nada 0.2. Me envió el email de primera lluvia, el problema ha sido que al llegar al cambio de día a las 00;00, me ha vuelto a enviar el email de primera lluvia 0.2.  He comprobado el fichero cache y en este sigue estando el valor 0.2
01-04-2021 23:59:53,0.2
Se supone que el script debe poner el fichero cache a 0,0 a las 00;00 pero si cron se ejecuta o a las 23:58 o a la 00:;01 esta orden no se cumple creo
if (date('H:i') == "00:00") file_put_contents($realtimecachefile, $fechar.',0.0');

Alguna forma que al cambiar de día lo ponga a 0 sin ser por la hora, otra opción seria eliminar el fichero cache unos minutos antes de las 00:00
Gracias y perdón que sea tan torpe

Desconectado jmviper

  • Investigación
  • Hero Member
  • ******
  • Mensajes: 4.403
  • "Vortex Complex"
    • Ver Perfil
    • www.meteoarchena.es
  • Estación: Archena - ESMUR3000000030600B
Re:Script que envía email si no detecta cambios
« Respuesta #21 en: 02 de Abril del 2021, 00:56:11 am »
Ya dije en la explicación de las opciones de configuración del script que había que poner la ruta absoluta para el realtime.txt y para el archivo de caché.
Cuando se hace un script para ser ejecutado por cron hay que poner siempre las rutas absolutas.

En cuanto a lo del reseteo de la lluvia ya dije que estaba optimizado para ser ejecutado cada 10 minutos.

Deja esa sección así:

Código: [Seleccionar]
if (!file_exists($realtimecachefile)) file_put_contents($realtimecachefile, $fechar.','.$lluvia);
$realtimecache = explode(',', file_get_contents($realtimecachefile));
$flaglluviacache = 0;
if (substr($realtimecache[0],0,2) != $fecha[0]) {file_put_contents($realtimecachefile, $fechar.',0.0'); $flaglluviacache = 1;}

$fecha = strtotime($fechar);

$fechacache = strtotime($realtimecache[0]);
$lluviacache = $realtimecache[1];
if ($flaglluviacache) $lluviacache = "0.0";
$diff = $fecha - $fechacache;

$difflluvia = $lluvia - $lluviacache;

Eso detectará que si no es el mismo día en el realtime que en el archivo de caché pondrá a cero la lluvia.

P.D. Edito el trozo de script ya que seguiría saliendo el email al comenzar el día. Le he puesto una bandera o flag para saber que es el reseteo y se tenga el valor de 0.0 mm.


« Última modificación: 02 de Abril del 2021, 11:17:23 am por jmviper »


Archena, Valle de Ricote (Murcia). 120 msnm. 19.622 hab.
Davis Vantage Pro2 Plus

www.meteoarchena.es

Desconectado CarlosLSev

  • Sr. Member
  • ****
  • Mensajes: 272
    • Ver Perfil
    • Meteoviso
  • Estación: El Viso del Alcor- ESAND4100000041520A
Re:Script que envía email si no detecta cambios
« Respuesta #22 en: 04 de Abril del 2021, 09:23:51 am »
Ok, gracias de nuevo, ayer por suerte llovió y funcionó bien.

Desconectado CarlosLSev

  • Sr. Member
  • ****
  • Mensajes: 272
    • Ver Perfil
    • Meteoviso
  • Estación: El Viso del Alcor- ESAND4100000041520A
Re:Script que envía email si no detecta cambios
« Respuesta #23 en: 05 de Abril del 2021, 13:38:05 pm »
Como consejo.

A mi, activar cualquier mailer me da un miedo atroz. Sobre todo Sendmail, que siempre se ha caracterizado por ser un agujero de seguridad.

Os sugiero usar la mensajería de Telegram

Ya hace tiempo, en el subforo de weewx puse las instrucciones.

Yo lo tengo programado para que cada vez que mi Orange Pi o mi Raspberry Pi se reinicien, me manden un mensaje. La Orange se reinicia todos los días, y la Raspi solo cuando se necesita.

Hola, disculpa que te moleste, el otro día mencionaste en un post que enviabas alerta a Telegram cuando la raspberry iniciaba etc.. Estoy buscando en el.subforo de weewx y no doy con el. Puedes pasar enlace?
Gracias

Desconectado CarlosLSev

  • Sr. Member
  • ****
  • Mensajes: 272
    • Ver Perfil
    • Meteoviso
  • Estación: El Viso del Alcor- ESAND4100000041520A
Re:Script que envía email si no detecta cambios
« Respuesta #24 en: 05 de Abril del 2021, 16:17:09 pm »
Nada, use mal el buscador, y no me di cuenta que solo buscaba en una sección
https://forum.meteoclimatic.net/index.php/topic,2782.msg22053.html#msg22053

Desconectado CarlosLSev

  • Sr. Member
  • ****
  • Mensajes: 272
    • Ver Perfil
    • Meteoviso
  • Estación: El Viso del Alcor- ESAND4100000041520A
Re:Script que envía email si no detecta cambios
« Respuesta #25 en: 11 de Abril del 2021, 17:06:31 pm »
Veamos, llevo unas horas dandome cabezazos


El final de tu script (mas algo que le puse)
if ($lluvia == 0 or $difflluvia == 0)  exit;
if ($lluviacache == 0 and $lluvia > 0) $mensaje = utf8_decode("Primera lluvia del día "). $lluvia." l  a las ". $now;
if ($difflluvia > 0 and $lluviacache > 0 and $diff >= $tiemporeanudacion * 60) $mensaje = "Vuelve a llover ". $lluvia." l  ha llovido a las". $now;   
if ($difflluvia >= $umbraltormenta and $diff >= $tiempocomprobacion * 60) $mensaje = "Tormenta". $lluvia." l  a las ". $now;


Con la siguiente linea envía el email con el mensaje correspondiente
if ($mensaje) mail($to, $mensaje, date( ""), 'From: ' . $from); 

Como hago para que además lo envié a telegram
La url con los datos correctos me envía a mi el texto $mensaje copiandola y pegandola en el navegador
https://api.telegram.org/botXXXXXXXXXXXXXXXXXXXXXX/sendMessage?chat_id=YYYYYY&text=$mensaje

XXXX=ID el boot
YYYYY=ID del canal grupo o privado

 

Desconectado jmviper

  • Investigación
  • Hero Member
  • ******
  • Mensajes: 4.403
  • "Vortex Complex"
    • Ver Perfil
    • www.meteoarchena.es
  • Estación: Archena - ESMUR3000000030600B
Re:Script que envía email si no detecta cambios
« Respuesta #26 en: 11 de Abril del 2021, 17:36:40 pm »
file_get_contents('https://api.telegram.org/botXXXXXXXXXXXXXXXXXXXXXX/sendMessage?chat_id=YYYYYY&text='.$mensaje);

Prueba con file_get_contents. A fin de cuentas realiza un GET http igual que el navegador.



Archena, Valle de Ricote (Murcia). 120 msnm. 19.622 hab.
Davis Vantage Pro2 Plus

www.meteoarchena.es

Desconectado CarlosLSev

  • Sr. Member
  • ****
  • Mensajes: 272
    • Ver Perfil
    • Meteoviso
  • Estación: El Viso del Alcor- ESAND4100000041520A
Re:Script que envía email si no detecta cambios
« Respuesta #27 en: 11 de Abril del 2021, 18:39:39 pm »
Así no me lanza error, pero tampoco me envía el mensaje a telegram
Pero es algo del php. Si creo un php con esto
$token = "TuTokenAqui";
$id = "IdDelUsuariooCanalAqui";
$urlMsg = "https://api.telegram.org/bot{$token}/sendMessage";
$msg = "Tu mensaje aqui";
 
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $urlMsg);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "chat_id={$id}&parse_mode=HTML&text=$msg");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 
$server_output = curl_exec($ch);
curl_close($ch);
Y lo abro en el navegador tampoco va
Curioso si abro el navegador con la URL
https://api.telegram.org/botXXXXXXXXXXXXXXXXXXXXXX/sendMessage?chat_id=YYYYYY&text=Tu mensaje aqui si va

Voy a investigar...
« Última modificación: 11 de Abril del 2021, 20:26:28 pm por CarlosLSev »

Desconectado jmviper

  • Investigación
  • Hero Member
  • ******
  • Mensajes: 4.403
  • "Vortex Complex"
    • Ver Perfil
    • www.meteoarchena.es
  • Estación: Archena - ESMUR3000000030600B
Re:Script que envía email si no detecta cambios
« Respuesta #28 en: 11 de Abril del 2021, 20:25:53 pm »
Pues para probar he creado un bot de esos y ejecutándolo con file_get_contents envía los mensajes que le pongo.

En el terminal ejecuta php -a y te saldrá la línea de comandos de PHP.

Ponle esta línea

file_get_contents('https://api.telegram.org/botXXXXXXXXXXXXXXXXXXXXXX/sendMessage?chat_id=YYYYYY&text=prueba');

pon tu bot y chat_id y a ver si te da algún error.

Si no da ningún mensaje lo que has probado es porque la variable $mensaje estará vacía.


Archena, Valle de Ricote (Murcia). 120 msnm. 19.622 hab.
Davis Vantage Pro2 Plus

www.meteoarchena.es

Desconectado CarlosLSev

  • Sr. Member
  • ****
  • Mensajes: 272
    • Ver Perfil
    • Meteoviso
  • Estación: El Viso del Alcor- ESAND4100000041520A
Re:Script que envía email si no detecta cambios
« Respuesta #29 en: 11 de Abril del 2021, 20:31:22 pm »
Como es normal me da error
php > file_get_contents('https://api.telegram.org/botXxxxxxxxxxx/sendMessage?chat_id=yyyyyyy&text=Prueba');
PHP Warning:  file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages:
error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed in php shell code on line 1
PHP Warning:  file_get_contents(): Failed to enable crypto in php shell code on line 1
PHP Warning:  file_get_contents(https://api.telegram.org/botXXXXXXXXXXXX/sendMessage?chat_id=YYYYYYY&text=Prueba): failed to open stream: operation failed in php shell code on line 1