Script para verificar o Status da bateria

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

[ Hits: 576 ]

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

Zshortcut - criar atalhos no menu de programas

Baixar fontes em massa utilizando o terminal Linux

Calculando tempo para reportar relatórios ou as famosas log`s.

Transformar eBook em Audiobook

Gerar backup do MySQL ou Postgres


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts