sudo crontab notify -отправка не работает

Я использовал описанный ниже метод, удалив первые вхождения оранжевого цвета в файле

perl -pne "s/ /\n/g" o.txt|sed '/^$/d'| sed '0,/oranges/s/oranges//g'| sed '/^$/d'| perl -pne "s/\n/ /g"| sed "s/apples.*bananas/applesandfriends/g"

выход

applesandfriends pomelos oranges 
0
08.05.2021, 00:16
1 ответ

D -Шина проверяет, совпадают ли UID вызывающего процесса и демона сеанса. Ваш сценарий должен быть запущен notify-sendот имени целевого пользователя. Если вы настаиваете на запуске скрипта от имени root, то в скрипте вам нужно sudo -u user notify-send ….

Имейте в виду, что sudoочищает среду, поэтому DBUS_SESSION_BUS_ADDRESSиз среды скрипта не попадет в средуnotify-send(/etc/sudoersи политика безопасности может позволить sudoсохранить переменную, но в вашем случае это, вероятно, не произойдет по умолчанию ).

Вы можете попробовать изменить настройки, я не буду вдаваться в подробности. Также естьsudo -E(см. man 8 sudo). Наименее навязчивый метод — запрос sudoна установку переменной по требованию :

.
sudo -u user DBUS_SESSION_BUS_ADDRESS="$DBUS_SESSION_BUS_ADDRESS" \
   notify-send "I want to see this"

Когда оболочка, обрабатывающая сценарий, расширяется $DBUS_SESSION_BUS_ADDRESS, команда становится:

sudo -u user DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus \
   notify-send "I want to see this"

и эту форму также можно использовать напрямую, так что решать вам.

В общем случае можно настроить так, чтобы sudoне разрешалось устанавливать переменную даже таким образом. В худшем случае должно работать следующее:

sudo -u user sh -c '
   DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus notify-send "I want to see this"
'
0
28.07.2021, 11:34

Теги

Похожие вопросы