Alarme de bateria do Xubuntu

1

Eu preciso escrever um roteiro, mas estava além da minha capacidade. Então eu peço uma ajuda para aqueles mais capazes na linha de comando.

Eu preciso de um script que verifique a porcentagem de bateria a cada minuto e soe um sinal se cair abaixo de um certo limite.

Eu acho minha porcentagem com o seguinte comando:

   -i / org / freedesktop / UPower / devices / battery_BAT1 | grep -E "porcentagem"

Eu gostaria que fosse tocado um sinal quando ele caísse abaixo de 25%.

Eu usaria esse script apenas para "descarregar" as sessões, e o ideal seria uma longa linha de comando que seria mais conveniente porque fechar o terminal também interromperia a verificação da bateria.

Pergunta:

  • O uso do crontab e o fechamento do terminal também fecharão o processo cron que está aberto? É melhor usar um loop do while ?

Obrigado a todos antecipadamente!

    
por Lucius1202 06.01.2017 / 10:18

1 resposta

1

Tenho certeza de que o script a seguir não é o ideal e pode até ter erros que não consigo ver. Sou muito amador em programação e só faço isso como hobby. Terei prazer em aceitar críticas ou sugestões! :)

Script usando acpi

#!/bin/bash

# A script to make an alarm go off at desired battery thresholds


### Variables

BAT=$(acpi | grep -o [[:digit:]][[:digit:]] | head -1)
LOW_LVL=35
CHARG=$(acpi | grep -o "Charging")
CHARGING=0

### Functions

charging()
{
    ### Checks wether the computer is charging (1) or not (0) 
    if [ "$CHARG 1" = "Charging 1" ]; then
        CHARGING=1
    else CHARGING=0 
     fi
    echo $CHARGING
}

alarm_connect()
{
    notify-send -i /usr/share/icons/gnome/48x48/status/battery-low.png "Battery under 35%" "Charge it"
    paplay /usr/share/sounds/freedesktop/stereo/complete.oga
}


### Main

while true
do
    if [  $(charging) = 0   ]; then
        if [ $BAT -le $LOW_LVL ]; then
            $(alarm_connect)
             fi

    sleep 1m
done

Script usando upower

#!/bin/bash

# A script to make an alarm go off at desired battery thresholds

### Variables

BAT=$(upower -i $(upower -e | grep 'BAT') | grep -E "state|to\ full|percentage" | grep -o [[:digit:]][[:digit:]])
LOW_LVL=25
CHARG=$(upower -i $(upower -e | grep 'BAT') | grep -E "state|to\ full|percentage" | grep -o "\ charging")
CHARGING=0

### Functions

charging()
{
    ### Checks wether the computer is charging (1) or not (0) 
    if [ "$CHARG" = " charging" ]; then
        CHARGING=1
    else CHARGING=0 
     fi
    echo $CHARGING
}

alarm_connect()
{
            paplay /usr/share/sounds/freedesktop/stereo/complete.oga
}

### Main

while true
do
    if [  $(charging) = 0   ]; then
        if [ $BAT -le $LOW_LVL ]; then
            $(alarm_connect)
        fi
    fi

    sleep 60
done

Você pode substituir conforme desejado:

  • As variáveis LOW_LVL para modificar a% da bateria na qual deseja que o alarme seja acionado.
  • O som e o ícone que aparecem com o notify-send , basta verificar o caminho até eles e você pode encontrar um número diversificado de opções lá.
  • O sleep tempo. Exemplo: sleep 60 = sleep 1m .
  

Usar o crontab e fechar o terminal também fecha o processo cron que está aberto?

Não, fechar o terminal não parará o trabalho cron . Então, se é assim que você quer usá-lo, execute-o a partir do terminal e feche-o quando terminar.

    
por M. Becerra 15.02.2017 / 23:35