Использование Zenity в задании root incron для отображения сообщения вошедшему в систему пользователю

Работает над сценарием для автоматической загрузки файлов, которые помещены в каталог, а затем отображает ссылку на них вошедшего в систему пользователя. Пользователи машины будут аутентифицированы через LDAP.

Каталог, за которым наблюдает incron, находится за пределами любых пользовательских каталогов и имеет символическую ссылку на каталог / home / username / uploads для каждого пользователя. Когда пользователь размещает файл здесь, он автоматически загружается без проблем.

Я сталкиваюсь с проблемами при отображении URL-адреса файла для текущего пользователя. Вот соответствующий код:

из /var/spool/incron/root

/home/public/uploads IN_CLOSE_WRITE /home/public/upload_files.sh > /dev/null 2>&1

Строки из /home/public/upload_files.sh, относящиеся к отображению Zenity:

DISPLAY="$(ck-list-sessions | grep "active = TRUE" -A1 | tail -n 1 | cut -f2 -d"'").0"
zenity --info --text="http://aniceurlhere.com/`date +%m.%d.%y`/$filename" --display=$DISPLAY

Как уже упоминалось, загрузка завершается, но сообщение Zenity никогда не отображается. Просматривая / var / log / cron, я вижу, что задание выполнено и завершено, и там не отображаются ошибки.

Любая помощь будет оценена.

1 ответ

Это займет немного усилий, если вы хотите использовать zenity или notify-send. Я пока не работал, но вместо этого я использовал xmessage:

Простой вариант 1: xmessage (в скрипте)

MSSG="/tmp/mssg-file-${RANDOM}" 
echo -e " MESSAGE \n ==========\n Done with task, YEY. " > ${MSSG}
xmessage -center -file ${MSSG} -display :0.0 
[[ -s ${MSSG} ]] && rm -f ${MSSG}

Простой вариант 2: установить ДИСПЛЕЙ (тогда должно работать)

    export DISPLAY=:0 && /usr/bin/somedirectory/somecommand
Другие вопросы по тегам