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
Ejemplo: Echemos un vistazo a todas las opciones (modificadores) disponibles:
acpi -h
Mostrar porcentaje y nivel de batería en Linux:
acpi -b
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.
- espeak: el comando
espeak
habla o narra cualquier parámetro que pase con él, por ejemplo, dirá “Hola Alexis” si ejecutasespeak "Hola Alexis"
. Espeak se puede instalar como cualquier paquete normal:
sudo apt install espeak
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 el23%
se cambiará a23
. - 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
muestracharging
, “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 el30
o100
). - Utilizaremos
espeak -ves
para que la narración sea en idioma español. - Los iconos utilizados se ubicaran en el directorio
/usr/local/bin/
.
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
¿Cómo ejecutar este script?
Si eres principiante, realiza lo siguiente:
- Ejecuta
nano script.sh
(este será el archivo ejecutable) - Copia y pega el contenido anterior, tal como se muestra en pantalla de arriba.
- Presiona las teclas
Ctrl +O para guardar y, luegoCtrl +X para salir. - Finalmente, ejecuta el script con el comando
bash script.sh
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:
- Cómo depurar scripts bash en Linux
- TLP: Aumenta y Optimiza la vida de tu Batería en Linux
- Y si eres de Windows, +7 maneras de mejorar la duración de batería en Windows 10
¿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 Facebook, Twitter, Instagram y/o YouTube para que no te pierdas del mejor contenido informático y hacking!