Script para verificar o Status da bateria

Publicado por Guilherme Moreira de Oliveira (última atualização em 31/05/2024)

[ Hits: 1.320 ]

Homepage: https://cantinhodoromeo.com.br

Download 7369.bateria.sh




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.

  



Esconder código-fonte

#!/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

Scripts recomendados

Script para enviar put para uma API usando curl e dados no formato json

Malwares

getw.bash

Servidor em standby

Download automatizado do instalador do AVG Free


  

Comentários
[1] Comentário enviado por maurixnovatrento em 23/06/2024 - 15:43h

ótimo script. Vou testar.
______________________________________________________________________
Inscreva-se no meu Canal: https://www.youtube.com/@LinuxDicasPro
Repositório GitHub do Canal: https://github.com/LinuxDicasPro
Grupo do Telegram: https://t.me/LinuxDicasPro
Meu GitHub Pessoal: https://github.com/mxnt10


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts