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