Script para verificar o Status da bateria
Publicado por Guilherme Moreira de Oliveira (última atualização em 31/05/2024)
[ Hits: 1.310 ]
Homepage: https://cantinhodoromeo.com.br
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.
#!/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
Ver TV e rádio online por shell script
Script para calcular a media área de cobertura de impressão (toner ou tinta)
Visualizar ícone dos .exe em seu Gnome
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Multifuncional HP imprime mas não digitaliza
Dica básica para escrever um Artigo.
Como Exibir Imagens Aleatórias no Neofetch para Personalizar seu Terminal
Preciso de ajuda para mudar do ubuntu para fedora (3)
PPOe Down e Não sobe sozinho. (Mikrotik) (1)
Erro ao iniciar serviço samba4 como novo dc em um ambiente com ad (3)
Módulo de segurança da caixa para linux Ubuntu 24.04 LTS (2)