Script para verificar o Status da bateria
Publicado por Guilherme Moreira de Oliveira (última atualização em 22/05/2025)
[ Hits: 2.762 ]
Homepage: https://rapoelho.com.br/
Download batbench.sh (versão 2)
Este foi um Script que acabei fazendo para gerar um log da bateria do meu notebook para fins de curiosidade. E ele gera uma saída com arquivos na pasta ~/Logs com a Porcentagem Atual, Tempo Restante da Bateria e a Taxa de Descarga/Carga da Bateria.
As dependências do Script são:
- acpi: Para mostrar o tempo restante e a porcentagem atual da bateria
- upower: Para mostrar a taxa de Carga/Descarga da bateria
Ele tem quatro opções de funcionamento:
./bateria.sh :Apenas exibe o estado atual da bateria
./bateria.sh -l [VEZES]: Cria um Log por quantas vezes o usuário definiu com cada registro sendo num intervalo de cinco minutos
./bateria.sh -ut [VEZES] [INTERVALO]: Cria um Log por quantas vezes que o usuário definiu com cada registro sendo no intervalo que o usuário definiu
./bateria -b [BATERIA]: Cria um Log até a bateria atingir a porcentagem desejada com um intervalo de um minuto entre os registros. Por padrão, o script é executado até atingir 20% de bateria restante.
E esse script pode ser usado para medir a bateria na Carga e na Descarga.
Versão 2 - Enviado por Guilherme Moreira de Oliveira em 20/05/2025
Changelog: - Correções no Código do Script, agora o modo de Benchmark (-b) encerra no momento certo
- Adicionei o tempo total em que a bateria durou no modo de Benchmark (-b)
#!/bin/bash
batStatus () {
#Extraindo a Porcentagem Atual da Bateria do acpi
BatAtual=`acpi -b | gawk -F ',' -P '{ print $2 }' | gawk -P '{ print $1 }'`
#Extraindo o tempo restante do acpi
TempoRestante=`acpi -b | gawk -P '{ print $5 }'`
#Extraindo a Taxa de Carregamento/Descarregamento da Bateria
Taxa=`upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep -e 'energy-rate' | gawk -F ':' -P '{ print $2 }' | sed 's/ //g'`
echo "["`date +"%d-%m-%Y - %H:%M:%S"`"]" # Exibe a Data
echo "Bateria Atual:" $BatAtual #Exibe a porcentagem da bateria
echo "Tempo restante:" $TempoRestante #Exibe o tempo restante
echo "Taxa:" $Taxa #Exibe a Taxa de Descarregamento
}
ajudaComandos () {
echo "
Uso: ./bateria.sh [OPÇÕES]
Opções:
-l Registra o estado da Bateria a cada 5 minutos na pasta ~/Logs por algumas vezes.
-ut Registra o estado da Bateria por algumas vezes pelo intervalo definido pelo usuário
-b Registra o estado da Bateria a cada um minuto na pasta ~/Logs até a bateria atingir a porcentagem restante desejada. O valor padrão é 20%
-h Exibe essa tela com as opções disponíveis
"
}
criarLog () {
if [ -d ~/Logs ]; then # Verificando se a pasta de Logs existe
echo "" > /dev/null # Jogando a saída fora para prosseguir com o Script
else
mkdir ~/Logs # Se não existe, criar a pasta de Logs
fi
Arquivo=~/Logs/Bat_`date +"%d-%m-%Y_%H-%M-%S"`.txt #Variável com a Data do Arquivo de Log
touch $Arquivo # Criando o Arquivo
}
if [ $# -lt 1 ]; then # Se não tiver argumentos, executar o script normalmente
batStatus
exit 1
fi
if [ $1 == "-l" ]; then
if [ $# -lt 2 ]; then # Verificando se tem as vezes em que o Log será registrado
echo "Faltou o número de vezes em que o estado da Bateria será registrado.
Uso: ./bateria.sh -l [VEZES]
Exemplo: \"./bateria.sh -l 5\" para fazer cinco registros do estado da Bateria na pasta ~/Logs
"
exit 1
fi
echo "O Log começou a ser gerado em:" `date +"%d-%m-%Y às %H:%M:%S"` "
E serão feitos" $2 "registros com um intervalo de 5 minutos entre cada um deles"
criarLog
batStatus >> $Arquivo
for (( runs=1 ; runs<=$2-1 ; runs++ )); do # Jogando a saída para o arquivo de Log
echo "" >> $Arquivo
sleep 300
batStatus >> $Arquivo
done
elif [ $1 == "-ut" ]; then
if [ $# -lt 3 ]; then # Verificando se tem as vezes em que o Log será registrado
echo "Faltou o número de vezes em que o estado da Bateria será registrado e o intervalo dos registros.
Uso: ./bateria.sh -ut [VEZES] [INTERVALO]
Exemplo: \"./bateria.sh -ut 5 10\" para fazer cinco registros do estado da Bateria na pasta ~/Logs com um intervalo de 10 minutos a cada registro"
exit 1
fi
echo "O Log começou a ser gerado em:" `date +"%d-%m-%Y às %H:%M:%S"` "
E serão feitos" $2 "registros com um intervalo de" $3 "minutos entre cada um deles"
criarLog
batStatus >> $Arquivo
for (( runs=1 ; runs<=$2-1 ; runs++ )); do # Jogando a saída para o arquivo de Log
echo "" >> $Arquivo
sleep $((60 * $3))
batStatus >> $Arquivo
done
elif [ $1 == "-b" ]; then
BatBenchAtual=`acpi -b | gawk -F ',' -P '{ print $2 }' | gawk -P '{ print $1 }' | tr -d '%'` # Verificando o Valor atual da Bateria
if [ $# -lt 2 ]; then # Colocou o valor na hora de dar o comando?
BatBench=20 # O valor padrão é 20%, que é a Bateria fraca no Gnome
else
BatBench=$2 # O valor definido pelo usuário
fi
criarLog
echo "O Log começou a ser gerado com" $BatBenchAtual"% de Bateria Restante em" `date +"%d-%m-%Y às %H:%M:%S"` "
E será feito até" $BatBench"% de Bateria restante com registros num intervalo de um minuto entre eles"
batStatus >> $Arquivo
until [ $BatBenchAtual == $BatBench ]; do # Um Loop para fazer o Log até a porcentagem do -b
BatBenchAtual=`acpi -b | gawk -F ',' -P '{ print $2 }' | gawk -P '{ print $1 }' | tr -d '%'`
sleep 60
echo "" >> $Arquivo
batStatus >> $Arquivo
done
elif [ $1 == "-h" ]; then
ajudaComandos
else
echo "Opção Inválida! Consulte a lista de opções usando o -h"
exit 1
fi
Conversor de binário pra decimal e vice-versa
Montando compartilhamentos windows
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Atualizar Linux Mint 22.2 para 22.3 beta
Jogar games da Battle.net no Linux com Faugus Launcher
Como fazer a Instalação de aplicativos para acesso remoto ao Linux
Conky, alerta de temperatura alta (10)
Assisti Avatar 3: Fogo e Cinzas (3)
Duas Pasta Pessoal Aparecendo no Ubuntu 24.04.3 LTS (42)









