Vamos a escribir un script bash que dirá «Batería baja» cuando el porcentaje de carga de la batería esté por debajo de un valor de umbral especificado. Antes de comenzar con esto, primero, debemos comprender algunos comandos básicos y la terminología que se describe a continuación:
Algunos comandos de Bash:
- acpi :este comando devuelve el porcentaje de batería cargada, si el dispositivo se está cargando o descargando y la cantidad de tiempo que queda antes de que la batería se descargue por completo.
- Ejemplo: acpi -b produce el siguiente resultado:
Battery 0: Discharging, 13%, 00:52:52 remaining
- Aquí, Batería 0 significa que no se está cargando y Batería 1 significa que se está cargando. 13% es el Porcentaje de Batería Cargada. 00:52:52 es el tiempo que queda antes de Hibernar.
- notificar-enviar: este comando se usa para alertar las ventanas emergentes de notificación en Linux. Con este mando tendremos la alerta de aviso de carga/descarga de batería.
Paquete requerido: el comando espeak habla o narra cualquier parámetro que pase con él, por ejemplo, hablará «demo espeak» si ejecuta espeak «demo espeak» . Espeak se puede instalar como cualquier paquete normal:
sudo apt install espeak
Filtros de Linux requeridos:
- grep :el filtro grep se usa para buscar una string específica en un archivo dado.
- cortar :El filtro de corte nos permite cortar y quitar la sección deseada del archivo de texto antes de la salida estándar.
- sed :significa editor de secuencias. Este filtro se utiliza para realizar inserción, eliminación, búsqueda y reemplazo. Estamos usando sed aquí para reemplazar elsigno%«».
Python3
#!/bin/bash # echo "Saurav Chaudhary Gujjar" battery_level =$(acpi - b | grep - P - o '[0-9]+(?=%)') # Battery 0: Discharging, 13%, 00:52:52 remaining # To get the battery percentage only we'll cut the # second value which ends at ", ". So we get 13% # Now we'll replace the % sign by "", so 13% will # be changed to 13 now. # acpi -b produces output as # echo $battery_level #$battery_level=13 # If the charger is plugged in, acpi shows "charging" # and if it's not plugged in, it shows "discharging". # if acpi -b shows charging, "grep -c" will return 1 # else it will return 0 ac_power =$(acpi - b | grep - c "Charging") # echo $ac_power #1 if charging(plugged in) and 0 if discharging (not plugged in) # checks if ac_power is ON and battery is full battery_full =$(acpi - b | grep - c "Full") # echo $battery_full # when the battery is charging and it gets charged up to 100% # echo $battery_level # if charging and battery_level==100 if [[$ac_power - eq 1 & & $battery_level - eq 100]] | | [$battery_full - eq 1] then export DISPLAY = : 0.0 & & sudo - u saurav DISPLAY = : 0 DBUS_SESSION_BUS_ADDRESS = unix: path = /run/user/1000/bus notify-send - u critical "Saurav, Battery is full" "Level: $battery_level% " # it notifies Battery is full and shows the battery # full image which is stored in /usr/local/bin directory # so, it will narrate, please remove the # charger. It's charged up to 100%. espeak "Saurav, Battrey is full, Please Remove the charger" - s 140 fi # when the battery is not charging # and it goes below 30% if [[$ac_power - eq 0 & & $battery_level - lt 30]] then export DISPLAY = : 0.0 & & sudo - u saurav DISPLAY =: 0 DBUS_SESSION_BUS_ADDRESS = unix: path = /run/user/1000/bus notify-send - u critical "Saurav Gujjar, Battery is Low." "Level: $battery_level% " # similarily, it narrates #"please connect the charger" espeak "Saurav, Battery is Low, Please connect the charger" - s 140 fi