Script Bash alerta batería baja Linux
Script Bash alerta batería baja Linux

Script Bash para obtener alerta de batería baja en Linux

Vamos a escribir un script de bash que dirá “Batería baja” cuando el porcentaje de carga de la batería vaya a estar por debajo de un valor umbral específico. ¿qué te parece?

Antes de comenzar esto, primero, debemos comprender algunos comandos básicos y terminología que se describen a continuación:

Antes que nada, eres nuevo en BASH?

1. Comandos Bash de batería

  • acpi: Este comando devuelve el porcentaje de batería cargada, si el dispositivo se está cargando o descargando y el tiempo restante antes de que la batería se descargue por completo.
//Por ejemplo, para instalarlo en sistemas Debian
sudo apt-get install acpi
Instalar acpi en Linux
Instalar acpi en Linux

Ejemplo: Echemos un vistazo a todas las opciones (modificadores) disponibles:

acpi -h
Comando acpi ayuda
Comando acpi ayuda

Mostrar porcentaje y nivel de batería en Linux:

acpi -b
Ejemplo de comando acpi
Ejemplo de comando acpi
Battery 0: Full, 100%
Battery 0: Discharging, 100%, 05:31:26 remaining


Aquí, Battery 0 significa que no se está cargando y Battery 1 significa que se está cargando. 100% es el porcentaje de batería cargada. 05:31:26 es el tiempo que queda antes de que hiberne.

  • notify-send: Este comando se utiliza para alertar, tipo ventanas emergentes de notificación en Linux. Tendremos la alerta de la advertencia de carga/descarga de la batería con este comando.
Ejemplo comando notify-send
Ejemplo comando notify-send
  • espeak: el comando espeak habla o narra cualquier parámetro que pase con él, por ejemplo, dirá “Hola Alexis” si ejecutas espeak "Hola Alexis". Espeak se puede instalar como cualquier paquete normal:
sudo apt install espeak
Instalar espeak en Linux
Instalar espeak en Linux

2. Crear script bash de batería

Estos son algunos filtros necesarios de Linux:

  • grep: el filtro grep se utiliza para buscar una cadena especificada en un archivo determinado.
  • cut: el filtro cut nos permite cortar una sección deseada del archivo de texto antes de la salida estándar.
  • sed: significa stream editor. Este filtro se utiliza para realizar la inserción, eliminación, búsqueda y reemplazo. Usaré sed aquí para reemplazar el signo "%" por "".

Explicación rápida:


  • Tomemos como ejemplo la salida: Battery 0: Discharging, 23%, 00:30:50 remaining. Para obtener el porcentaje de la batería sólo vamos a cortar el
    segundo valor que termina en ", ". Así que obtenemos el 23%. Ahora reemplazaremos el signo % por "", así que el 23% se cambiará a 23.
  • Si el cargador está enchufado, acpi muestra “charging“. Si no está enchufado, muestra “discharging“. Y si está enchufado y con carga completa, mostrará “full“.
  • Si acpi -b muestra charging, “grep -c” devolverá 1. De lo contrario, devolverá 0.
  • Con la sentencia if verificamos el estado del enchufe y porcentaje de batería. De allí, podemos modificar los parámetros. (por ejemplo el 30 o 100).
  • Utilizaremos espeak -ves para que la narración sea en idioma español.
  • Los iconos utilizados se ubicaran en el directorio /usr/local/bin/.
Archivos necesarios script bash
Archivos necesarios script bash

Y, lo siguiente viene a ser el script en BASH.

#!/bin/bash 
#Author: EsGeeks | Alexynior
battery_level=$(acpi -b |cut -d "," -f2| sed 's/%//g')
echo $battery_level
ac_power=$(acpi -b|grep -c "Full")
echo $ac_power
if [[ $ac_power -eq 1 && $battery_level -eq 100 ]]
then
export DISPLAY=:0.0
notify-send -i "/usr/local/bin/bateria_completa.png" "Alexis, la bateria esta completa." "Nivel: $battery_level% ";
espeak -ves "Carga Completa, Retira el cargador" -s 140
fi

if [[ $ac_power -eq 0 && $battery_level -gt 30 ]]
then
export DISPLAY=:0.0
notify-send -i "/usr/local/bin/bateria_baja.png" "Alexis, Bateria Aceptable" "Nivel: $battery_level%";
espeak -ves "Por favor, vuelve a comprobar más tarde" -s 140
fi

if [[ $ac_power -eq 0 && $battery_level -lt 30 ]]
then
export DISPLAY=:0.0
notify-send -i "/usr/local/bin/bateria_baja.png" "Alexis, Bateria Baja." "Nivel: $battery_level% ";
espeak -ves "Por favor, conecta el cargador" -s 140
fi
Script bash sobre batería Linux
Script bash sobre batería Linux

¿Cómo ejecutar este script?

Si eres principiante, realiza lo siguiente:

  1. Ejecuta nano script.sh (este será el archivo ejecutable)
  2. Copia y pega el contenido anterior, tal como se muestra en pantalla de arriba.
  3. Presiona las teclas Ctrl + O para guardar y, luego Ctrl + X para salir.
  4. Finalmente, ejecuta el script con el comando bash script.sh
script bash alerta batería completa
script bash alerta batería completa

En realidad, he tratado de hacerlo entendible, pero si tienes algunas dudas estoy para ayudarte. Simplemente comenta o contáctame en mis redes sociales. En mi Instagram: @alexynior15 publicaré todas las demostraciones.

Puedes configurar un trabajo cron [Guía Básica: Crear y administrar trabajos de Cron en Linux] para ejecutar este script cada hora. Entonces, el script verificará el porcentaje de batería y la carga/descarga cada hora y narrará el resultado.

Como siempre, mis recomendaciones extras:

¿Te gustaría más artículos sobre scripts o temas similares? Deja tu comentario y lo tendré en cuenta. Hasta la próxima!

Si te gusta el contenido y deseas apoyar a la mejora del sitio web, considera hacer una contribución ¡haciendo clic aquí por favor!. ¡NO ES OBLIGATORIO, GRACIAS! 🙂

¿Te ha gustado este artículo? Sigue este blog en su fanpage de  FacebookTwitterInstagram y/o YouTube para que no te pierdas del mejor contenido informático y hacking!

Mi Carro Close (×)

Tu carrito está vacío
Ver tienda