Cihazların batarya durumuna kabuk betiğinde ulaşmak

2021-07-10 3 dk

UPower, güç kaynakları hakkında bilgiler toplayan ve derleyen bir ara katman yazılımı. Bu yazılımı GNU/Linux'ta kullanarak, örneğin laptop bataryanızın son durumunu veya kablosuz farenizin ne kadar şarjının kaldığını görebilirsiniz.

Bu yazıda ise bu bilgileri nasıl ayıklayıp bir betik içinde kullanabileceğimizi görelim.

upower kullanımı

Öncelikle --dump veya -d argümanıyla güç kaynaklarını listeleyelim:

$ upower -d

Eğer birden fazla güç kaynağı görünüyorsa, sadece istediğiniz güç kaynağını görüntüleyebilirsiniz. Bunun için çıktı içerisinde hedeflediğiniz güç kaynağının /org/freedesktop/UPower/devices ile başlayan cihaz yolunu kopyalayın.

--show-info veya -i argümanıyla sadece bu kaynağın bilgilerini görüntüleyebiliriz. Örneğin, benim dizüstü bilgisayarımın bataryası için kullanacağım komut:

$ upower -i /org/freedesktop/UPower/devices/battery_BAT0

Sadece kalan batarya miktarını yüzdelik olarak görmek isteseydim, şöyle bir komut işime yarardı:

$ upower -i /org/freedesktop/UPower/devices/battery_BAT0 | awk '/percentage/' {print $NF}'
87%

awk ile bilgileri bu şekilde ayıklayabiliriz. Örnekleri çeşitlendirmek mümkün. Aşağıda bir de grep ile tek seferde istediğimiz bilgileri bastırabileceğimiz bir yöntemin komutu var:

$ upower -i $(upower -e | grep 'BAT') | grep -E "state|to\ (full|empty)|percentage"

Ancak unutmayın ki yukarıdaki kod yalnızca terminalde sonucu görmek istediğinizde iyidir. Daha gelişmiş bir alternatif için okumaya devam edin.

Betik içinde batarya bilgilerini ayıklamak ve göstermek

İşleri otomatikleştirmek ve daha özel programlar yapabilmek için batarya bilgilerini kullanmak isteyebilirsiniz. Böyle bir amacınız varsa, yazdığım örnek bir betiği aşağıda bulabilirsiniz.

battery
#!/bin/bash

### Author: Eyüp Can ELMA
### Website: https://elma.dev
### This script is intended to be used to show information about battery devices.

# YOU CAN EDIT THE LINES BELOW
DEFAULT_DEVICE_NAME='battery_BAT0'
# YOU CAN EDIT THE LINES ABOVE


# ! DO NOT EDIT VARIABLES BELOW ! #
DEVICE_NAME=${1:-'battery_BAT0'}
PATH_PREFIX='/org/freedesktop/UPower/devices'
DEVICE_PATH="$PATH_PREFIX/$DEVICE_NAME"
# ! DO NOT EDIT VARIABLES ABOVE ! #

if [ $# -gt 1 ]; then
  echo "Only one parameter is allowed."
  echo "Usage: '$0 <optional:device_name>'"
  exit 1
fi

# GATHER INFORMATION ABOUT THE BATTERY DEVICE
INFORMATION=$(upower -i "$DEVICE_PATH" 2> /dev/null)
PERCENTAGE=$(awk '/percentage/ {print $NF}' <<< $INFORMATION)
CAPACITY=$(awk '/capacity/ {print $NF}' <<< $INFORMATION)
UPDATED=$(awk -F '(' '/updated/ {print $NF}' <<< $INFORMATION | sed -r 's/\)//')
TIME_TO_EMPTY=$(awk -F ':' '/time to empty/ {print $NF}' <<< $INFORMATION | sed -r 's/\s{2,}//g')


print_info() {
  [ $# -ne 2 ] && echo "print_info() requires two parameters." && exit 1
  printf "%s\t%s\n" "$1" "$2"
}


print_info "percentage:" "$PERCENTAGE"
print_info 'capacity:' "$CAPACITY"
print_info 'updated:' "$UPDATED"
print_info 'time to empty:' "$TIME_TO_EMPTY"

DEFAULT_DEVICE_NAME değişkenini düzenleyerek varsayılan batarya cihazının adını kendinize göre değiştirebilir veya programı çalıştırırken parametre olarak girebilirsiniz. Yukarıdaki kodları battery isimli bir dosya oluşturup içine yapıştırın. chmod +x ./battery komutuyla çalışma izni verin.

Kullanımı:

$ ./battery
percentage:     37%
capacity:       75.4833%
updated:        44 seconds ago
time to empty:  2.8 hours
veya
$ ./battery battery_BAT0
percentage:     92%
capacity:       62.1224%
updated:        46 seconds ago
time to empty:  5.9 hours

Hepsi bu.

Tarih: 2021-07-10
Kategoriler: gnu linux
Etiketler: upowershell