Запустите команду shutdown внутри bash-скрипта - PullRequest
1 голос
/ 15 марта 2019

Я пытаюсь создать исполняемый файл (скрипт bash), чтобы показать мне уведомление и выключить компьютер, когда процесс не найден.

Я запусту скрипт как приложение запуска, и я 'используя команды notify-send и shutdown в этом сценарии.

Проблема в следующем:
(1) Если я добавлю myfolder/myscript в список автозагрузки приложений, он не сможет выполнить команду shutdown (для этого требуется пароль root)
(2) Если я добавлю скрипт sudo myfolder/myscript, он не сможет отображать уведомления через приложение notify-send.

Я уже много раз искал в интернете и попробовал следующие шаги:
(1) Добавил путь к сценарию или /sbin/shutdown к sudores с помощью sudo visudo
(2) Добавил команду su - $USER -c "DISPLAY=$DISPLAY DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$UID/bus перед notify-send (я обнаружил, что некоторые пользователи сообщают, что root не может отправлять уведомления) `

Итак ... никто из них не работал.Что мне не хватает?Что можно сделать для отображения уведомлений и выключения?

Вот мой код:

#!/bin/bash

#Search for a specific process and sleep if it is found (removed for space saving)

shut_time=$(date --date='10 minutes' +"%T")
notify-send -t 600000 "WARNING:
Program is not running.
Shutting down in 10 minutes (scheduled for $shut_time)."

#ALREADY TESTED BELLOW LINES (DON'T WORK)
#su - $USER -c "DISPLAY=$DISPLAY DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$UID/bus notify-send -t 600000 'WARNING:
#Program is not running.
#Shutting down in 10 minutes.'"

sudo /sbin/shutdown -h +10 #Tried with our without sudo

Я использую MX Linux 18 (xfce, на основе Debian).

1 Ответ

0 голосов
/ 15 марта 2019

Я думаю, что не хватает входа для выключения в sudoers. Пожалуйста, создайте файл sudo в / etc / sudoers.d и введите следующую запись:

[YOURUSER] ALL = (ALL) NOPASSWD: /sbin/shutdown

Замените [YOURUSER] своей учетной записью!

...