Использование 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