Alerta de batería baja: script bash

Actualizado el miércoles, 27 mayo, 2020

Alerta de batería baja: script bash

Después del ultimo articulo sobre TLP, hoy vemos un script bash que con la ayuda del comando watch, o con una tarea cron, nos lanzara una alerta indicándonos que tenemos la batería baja.

Para que el script funcione correctamente necesitamos tres herramientas; Normalmente vienen preinstaladas, si no es así lo tendrás que hacer manualmente.

  • acpi: Este comando nos dice el porcentaje de batería cargada, si se está cargando o descargando, y el tiempo restante que falta para que se descargue la batería por completo. Ejemplo: [acpib]–> Battery 0: Discharging, 15%, 00:43:36 remaining
  • espeak: El comando espeak es muy curioso, también desconocido. Podemos usarlo para introducir un texto en la terminal que se reproducirá en los altavoces de nuestro pc, por ejemplo: [espeak «visita sololinux»](entre comillas dobles). Si no lo tienes, lo instalas. Ejemplo: sudo apt install espeak.
  • notify-send: Con notify-send lanzamos ventanas emergentes que notifican lo ingresado. Ejemplo: [notify-send «Visila SoloLinux.es»](entre comillas dobles).

    Alerta en ventana emergente

    Alerta en ventana emergente

También haremos uso de las siguientes herramientas:

  • cut: Permite extraer la sección indicada de un archivo de texto antes de su salida.
  • sed: Usamos sed para reemplazar caracteres.
  • grep: Nos busca cadenas en un archivo.

Vemos el script.

 

Alerta de batería baja: script bash

Creamos el script.

nano alerta-bateria.sh

Copia y pega el script (puedes modificar lo que quieras.
#!/bin/bash 
#
battery_level=$(acpi -b |cut -d ", " -f2| sed 's/%//g') 
 
echo $battery_level	 #$battery_level=15			 

#Si el cargador esta conectado se muestra "charging"
#Si el cargador no esta conectado se muestra "discharging".
#Si acpi -b detecta carga, "grep -c" devuelve 1.
#Si acpi -b no detecta carga, "grep -c" devuelve 0.
ac_power=$(acpi -b|grep -c "Charging") 
echo $ac_power		 #1 if charging(plugged in) and 0 if discharging (not plugged in) 

#La bateria que carga llega al 100%. 
if [[ $ac_power -eq 1 && $battery_level -eq 100 ]] #if charging and battery_level==100 
then
export DISPLAY=:0.0 
notify-send "La batería esta cargada" "Carga: $battery_level% ";  

#Un audio nos indica que la bateria está cargada. 
espeak "bateria cargada" -s 140
fi 

#Mensaje emergente y por audio, nos queda el 20% 
if [[ $ac_power -eq 0 && $battery_level -lt 20 ]] 
then
export DISPLAY=:0.0 
notify-send "Queda poca batería" "Carga: $battery_level% "; 
espeak "Batería baja" -s 140 

fi

Guarda el archivo y cierra el editor.

Le damos permisos.

chmod +x alerta-bateria.sh

Lo podemos ejecutar manualmente, pero lo recomendable es crear una tarea cron que se ejecute cada cierto tiempo, en nuestro ejemplo cada 30 minutos.
nano /etc/crontab

Agregamos la tarea.
THIS_IS_CRON=1
*/30 * * * * /ruta/alerta-bateria.sh

Guarda el archivo y cierra el editor.

Ya tenemos todo listo, solo nos falta reiniciar cron.

service cron restart

o

service crond restart

 

Canales de Telegram: Canal SoloLinux – Canal SoloWordpress

Espero que este artículo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales. Alerta de batería baja: script bash.

 

4 Comentarios

  1. Ana Maria
    05/02/2020
    • Sergio G.B.
      05/02/2020
  2. ROMSAT
    27/05/2020
    • Sergio G.B.
      27/05/2020

Agregar comentario