Autor Tema: Scripts en Linux - Reinicio red, información arranque y comunicación Telegram  (Leído 6785 veces)

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

Desconectado jantoni

  • Hero Member
  • *****
  • Mensajes: 3.746
    • Ver Perfil
  • Estación: ESMAD2800000028522A
Pues aprovechando el hilo sobre la conectividad, he recuperado del cajón unos script que preparé hace años para unos inventos en ubicación remota.

Se trata de 3 ficheros.

checknet: Comprueba la conectividad del ordenador mediante ping a un ordenador predefinido. Si no responde, se entiende que la red no funciona correctamente. Se reinicia la red. Y en el caso de que tras varios reinicios de la red, no se recupere la comunicación, se hace un reinicio del ordenador. En el caso de que se recupere la conectividad, envía un mensaje por Telegram informando de la situación.

rc.local: Su función es sustituir al fichero /etc/rc.local. Informa por Telegram que el ordenador acaba de arrancar. Por lo general tras un reinicio.

telegram: Es el script para mandar via Telegram los mensajes generados por los scripts anteriores.

checknet y telegram los tengo ubicados en el directorio personal: En el caso de las raspis, lo tengo en /home/pi

rc.local copio la parte de Telegram en el original de /etc/rc.local

Hay que darles permisos de ejecución.

Y checknet es invocado por crontab cada 5 minutos. De ese modo, cada 5 minutos se comprueba que la raspi, en este caso, está viva. En realidad si se ha colgado el script no funcionará. Pero nunca, nunca he visto una raspberry pi colgada.

Espero que os sean útiles

checknet
Código: [Seleccionar]
#!/bin/bash

# Este script comprueba la conexión a internet mediante pings a google.com
# Si la conexión a internet está OK, el script finaliza
# Si no está OK, se reinicia el servicio de internet
# Si después de reiniciar el servicio de internet sigue igual, se reinicia la Orange Pi

# Debe incluirse en /etc/crontab con la periodicidad que se elija

# Uso del script
# No hay que pasar ningún parámetro al script

# Declara la direccion IP o dominio del dispositivo a comprobar
objetivo="8.8.8.8"

# Define el numero de pings que se van a enviar al dispositivo
let pings=5

# Define el tiempo en segundos entre reinicios del servicio de red
let espera=20

# Define el número de intentos de reinicio de networking
let intentos=2

# Define el dispositivo a reiniciar. Por lo general eth0 para ethernet y wlan0 para wifi
dispositivo='wlan0'

# Define el directorio donde se encuentran otros scrits
directorio='/home/pi'

######################################################
######################################################
######################################################


let bucle=0

while [ $bucle -lt $intentos ]; do
   resultado="true"
   # Realiza un ping sobre objetivo. Si el resultado es incorrecto cambia a false variable objetivo
   (! ping -c$pings $objetivo 2>&1) && resultado="false"

   # Si el resultado del ping es correcto, finaliza el script
   if [ $resultado == "true" ]
      then
         echo "Dispositivo online. Fin del Script"
         break
   fi

   # Si el ping no es correcto, continua el script
   # A continuacion se reinicia el servicio de internet
   # Despues de encender, se espera el tiempo indicado en la variable "espera" (en segundos) para reintentar y se eleva el contador bucle

   #/etc/init.d/networking restart
   echo "Tirando el dispositivo abajo"
   ifconfig $dispositivo down
   sleep 10
   echo "Levantando el interface"
   ifconfig $dispositivo up
   sleep $espera
   let bucle=$bucle+1
done

# A continuacion se vuelve a hacer un ping.
# Si el resultado es correcto se envia un mensaje a un grupo de Telegram mediante /home/admin/telegram
# Si el resultado no es correcto se reinicia la Orange Pi

if [ $bucle -gt 0 ]
   then
   resultado="true"
   (! ping -c$pings $objetivo 2>&1) && resultado="false"

   if [ $resultado == "false" ]
      then
      echo "Reiniciando"
      shutdown -r now
   else
      mensaje="La $(hostname) - $(hostname -I) se había desconectado de la red. Ha quedado en servicio después de $bucle reinicios del servicio networking."
      export mensaje
      $directorio/telegram
   fi
fi



rc.local
Código: [Seleccionar]
#!/bin/bash
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

mensaje="La $(hostname), se acaba de iniciar: $(date)

La dirección IP asignada es la $(hostname -I)

Los datos Wifi son:

$(iwconfig)

Saludos de su seguro servidor"

export mensaje

/home/pi/telegram

exit 0


telegram
Código: [Seleccionar]
#!/bin/bash

# Bibliografia
# https://blog.angelinux-slack.net/2017/01/10/usar-un-bot-de-telegram-para-enviar-mensajes-en-nuestros-sistemas-con-php-bash-y-python/
# Ligeros retoques hechos por mi, en realidad por pura intuicion
# Bash Pocket Reference. Arnold Robbins. Editorial O'Really 2nd Edition


USERID="IDdelgrupoTelegram"
KEY="KEYdelbot"
URL="https://api.telegram.org/bot$KEY/sendMessage"
MSG=$mensaje
curl -s --max-time 10 -d "chat_id=$USERID&disable_web_page_preview=1&text=$MSG" $URL

« Última modificación: 03 de Mayo del 2020, 21:37:09 pm por jantoni »

Desconectado jantoni

  • Hero Member
  • *****
  • Mensajes: 3.746
    • Ver Perfil
  • Estación: ESMAD2800000028522A
Re:Scripts en Linux - Reinicio red, información arranque y comunicación Telegram
« Respuesta #1 en: 01 de Mayo del 2020, 21:16:03 pm »
Por supuesto, como aquí hay mucho experto escondido en el follaje.....si tenéis sugerencias de mejora, ponedlas por favor.

Un foro es, para compartir.

Desconectado jantoni

  • Hero Member
  • *****
  • Mensajes: 3.746
    • Ver Perfil
  • Estación: ESMAD2800000028522A
Re:Scripts en Linux - Reinicio red, información arranque y comunicación Telegram
« Respuesta #2 en: 01 de Mayo del 2020, 21:22:28 pm »
Ah, se me olvidaba poner una pantalla de telegram en el que notifica que la Raspi se ha iniciado


Desconectado ea1htb

  • Jr. Member
  • **
  • Mensajes: 57
    • Ver Perfil
  • Estación: ESCTB3900000039400C
Re:Scripts en Linux - Reinicio red, información arranque y comunicación Telegram
« Respuesta #3 en: 02 de Mayo del 2020, 08:52:54 am »
muchas gracias @jantoni, eso me podria servir para un problema que tengo en mi raspy ???? me he dado cuenta que llevo unos dias que si se me va la luz, a la hora de volver a enviar datos, tengo que modificar el fichero resolv.conf, ya que me cambia la dns 8.8.8.8 a 127.0.1.0..... y no envia datos de la estacion a meteoclimatic

Desconectado jmviper

  • Investigación
  • Hero Member
  • ******
  • Mensajes: 4.403
  • "Vortex Complex"
    • Ver Perfil
    • www.meteoarchena.es
  • Estación: Archena - ESMUR3000000030600B
Re:Scripts en Linux - Reinicio red, información arranque y comunicación Telegram
« Respuesta #4 en: 02 de Mayo del 2020, 09:16:03 am »
Creo que tendrás que editar los servidores DNS en la configuración de red de la raspi o al arrancar networkmanager sobrescribirá resolv.conf

Si tienes la versión de escritorio puedes probar a ponerlos en el icono de red o en el terminal con raspi-config -> Configure Network Settings


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

www.meteoarchena.es

Desconectado ea1htb

  • Jr. Member
  • **
  • Mensajes: 57
    • Ver Perfil
  • Estación: ESCTB3900000039400C
Re:Scripts en Linux - Reinicio red, información arranque y comunicación Telegram
« Respuesta #5 en: 02 de Mayo del 2020, 09:18:26 am »
Creo que tendrás que editar los servidores DNS en la configuración de red de la raspi o al arrancar networkmanager sobrescribirá resolv.conf

Si tienes la versión de escritorio puedes probar a ponerlos en el icono de red o en el terminal con raspi-config -> Configure Network Settings

Gracias, voy a probar, lo tengo en modo terminal

Desconectado jantoni

  • Hero Member
  • *****
  • Mensajes: 3.746
    • Ver Perfil
  • Estación: ESMAD2800000028522A
Re:Scripts en Linux - Reinicio red, información arranque y comunicación Telegram
« Respuesta #6 en: 02 de Mayo del 2020, 10:15:03 am »
Lo del network manager, me ha parecido siempre una gran cagada.

Con lo fácil que era modificar resolv.conf o el fichero interfaces para modificar la ip.

Una gran cagada.

Desconectado jantoni

  • Hero Member
  • *****
  • Mensajes: 3.746
    • Ver Perfil
  • Estación: ESMAD2800000028522A
Re:Scripts en Linux - Reinicio red, información arranque y comunicación Telegram
« Respuesta #7 en: 02 de Mayo del 2020, 10:20:58 am »
muchas gracias @jantoni, eso me podria servir para un problema que tengo en mi raspy ???? me he dado cuenta que llevo unos dias que si se me va la luz, a la hora de volver a enviar datos, tengo que modificar el fichero resolv.conf, ya que me cambia la dns 8.8.8.8 a 127.0.1.0..... y no envia datos de la estacion a meteoclimatic

¿Usas DHCP?

Posiblemente lo que tengas que hacer es modificar la Raspberry para que no arranque si no hay red. Es posible que esté arrancando antes la Raspberry que el router.

O meter el script de comprobar la red en /etc/rc.local

Desconectado jmviper

  • Investigación
  • Hero Member
  • ******
  • Mensajes: 4.403
  • "Vortex Complex"
    • Ver Perfil
    • www.meteoarchena.es
  • Estación: Archena - ESMUR3000000030600B
Re:Scripts en Linux - Reinicio red, información arranque y comunicación Telegram
« Respuesta #8 en: 02 de Mayo del 2020, 11:12:55 am »
Lo del network manager, me ha parecido siempre una gran cagada.

Con lo fácil que era modificar resolv.conf o el fichero interfaces para modificar la ip.

Una gran cagada.

Sí jantoni… será lo que tú dices pero las raspbi no son ya para esos 4 gatos que les gustaba trastear con sensores y temas de desarrollo y tal... tienen muchas aplicaciones y sus ventas y su política ha cambiado para llegar a todo el mundo, tanto a los más expertos que tenían que editar archivos de configuración como a los más legos que empiezan, y por ello seguramente habrán visto la necesidad de herramientas en forma de interfaz "amigable" para que resulten más fáciles las configuraciones.
Ya se sabe que ahora todo es un negocio y hay que estar arriba innovándose.

Antes GNU/Linux era para los entendidos, ahora llega a más gente, y lo veo bien así para que haya más alternativas a Windows o Mac y sobre todo de código libre de grandes comunidades que se enriquecen entre sí compartiendo código.



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

www.meteoarchena.es

Desconectado jantoni

  • Hero Member
  • *****
  • Mensajes: 3.746
    • Ver Perfil
  • Estación: ESMAD2800000028522A
Re:Scripts en Linux - Reinicio red, información arranque y comunicación Telegram
« Respuesta #9 en: 02 de Mayo del 2020, 16:42:56 pm »
Parece que el script para comprobar la red, que funcionaba perfectamente en Orange Pi con ArmBian, no lo hace correctamente en Raspberry Pi.

Tendré que revisar el código.

Jarrrrr.......malditas versiones diferentes de Linux

Desconectado jantoni

  • Hero Member
  • *****
  • Mensajes: 3.746
    • Ver Perfil
  • Estación: ESMAD2800000028522A
Re:Scripts en Linux - Reinicio red, información arranque y comunicación Telegram
« Respuesta #10 en: 02 de Mayo del 2020, 17:28:40 pm »
modificados los script rc.local y checknet

Ahora se reinicia el ordenador correctamente. Pero la raspberry no hace caso y no tira abajo la red wifi. La verdad es que la raspi zero w me está haciendo unas pedorretas muy raras

Desconectado ea1htb

  • Jr. Member
  • **
  • Mensajes: 57
    • Ver Perfil
  • Estación: ESCTB3900000039400C
Re:Scripts en Linux - Reinicio red, información arranque y comunicación Telegram
« Respuesta #11 en: 02 de Mayo del 2020, 22:41:12 pm »
muchas gracias @jantoni, eso me podria servir para un problema que tengo en mi raspy ???? me he dado cuenta que llevo unos dias que si se me va la luz, a la hora de volver a enviar datos, tengo que modificar el fichero resolv.conf, ya que me cambia la dns 8.8.8.8 a 127.0.1.0..... y no envia datos de la estacion a meteoclimatic

¿Usas DHCP?

Posiblemente lo que tengas que hacer es modificar la Raspberry para que no arranque si no hay red. Es posible que esté arrancando antes la Raspberry que el router.

O meter el script de comprobar la red en /etc/rc.local

Si uso dhcp y posiblemente sea lo que comentas, que arranque antes la raspy que el router de la compañia en coger IP

Desconectado jantoni

  • Hero Member
  • *****
  • Mensajes: 3.746
    • Ver Perfil
  • Estación: ESMAD2800000028522A
Re:Scripts en Linux - Reinicio red, información arranque y comunicación Telegram
« Respuesta #12 en: 03 de Mayo del 2020, 00:09:52 am »
Con raspi-config puedes indicar que el boot espere a tener conexión a internet

Desconectado ea1htb

  • Jr. Member
  • **
  • Mensajes: 57
    • Ver Perfil
  • Estación: ESCTB3900000039400C
Re:Scripts en Linux - Reinicio red, información arranque y comunicación Telegram
« Respuesta #13 en: 03 de Mayo del 2020, 09:24:58 am »
gracias @jantoni , seguire investigando que esto de las raspys es un mundo

Desconectado jantoni

  • Hero Member
  • *****
  • Mensajes: 3.746
    • Ver Perfil
  • Estación: ESMAD2800000028522A
Re:Scripts en Linux - Reinicio red, información arranque y comunicación Telegram
« Respuesta #14 en: 03 de Mayo del 2020, 10:46:57 am »
Y que conste que, para mi, no es la mejor plataforma.

Sinceramente, prefiero algo con Orange Pi + Armbian

Mucho más estable y estándar.