Я написал запись в crontab которая запускает скрипт в моем домашнем каталоге как пользователь. Это уведомляет меня, если я забыл включить блок питания. Это отлично работает.

BATTERY=$(upower -e | grep 'BAT')
BATTERY_PERCENTAGE=$(upower -i $BATTERY|grep percentage|awk '{ print $2 }'|sed s/'%'/''/g)
AC_STATUS=$(cat /sys/class/power_supply/AC/online)

echo "Battery: $BATTERY_PERCENTAGE %"


if [ "$BATTERY_PERCENTAGE" -lt "20" ]  && 
[     "$AC_STATUS" -eq "0"             ]; then

   notify-send --urgency=critical "WARNING: Battery is about to die"  "Plug in the power cable"
   mplayer samsung_low_battery_sound.mp4 &> /dev/null 

fi

Моя проблема в том, что я не хочу, чтобы другая запись root-crontab проверяла, выключены ли аккумулятор и переменный ток, автоматически выключала ноутбук, если он на 5%. Скорее предпочел бы использовать существующий скрипт. Но команде shutdown нужен root-доступ. Возможно ли автоматическое отключение как пользователя через скрипт? (Рабочий стол позволяет это)

Будет

1 ответ1

0

Если вы не используете systemd, команда для выключения вашей системы без root :

dbus-send --system --print-reply --dest=org.freedesktop.login1 /org/freedesktop/login1 "org.freedesktop.login1.Manager.PowerOff" boolean:true

Если вы используете systemd, то сама systemd контролирует доступ к DBUS. Вы можете прочитать, как с этим справиться, на вики-странице Arch Linux на странице Разрешить пользователям отключение, которая предлагает несколько решений.

В качестве альтернативы, это может быть достигнуто путем изменения правил polkit , что немного сложнее, см. Еще раз вики-страницу Arch Linux на Polkit.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .