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: [acpi –b]–> 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
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.
Hoala Sergio hace tiempo lei que tu usas gimp para todo. La imagen animada que pones hoy tambien la has echo con gimp?. Puedes explicarme como por favor.
Felicidades por tu blog, hace años que te sigo.
Hola Ana María.
Efectivamente el gif animado lo hice con Gimp, ademas con una versión antigua (la 2.8.16). Visto tu interés haremos un articulo al respecto.
Gracias por seguirnos.
Muy bueno el script.
Un detallito solo. Para instalar el módulo espeak -> sudo apt install espeak
(faltaba una ‘e’)
Corregido, gracias por el reporte ROMSAT.