LINUX.ORG.RU

Ограничивать не регистрированный флешку и выдавать сообщение. Lubuntu notify-send

 , , ,


0

1

OS:Lubuntu
Создал правила который запускает скрипт если подключается стотонный usbflash накопитель.

Скрипт:

#!/bin/bash
mkdir /home/admin/Рабочий\ стол/1
zenity --info --text «Привет»

когда через терминал запускаю скрипт:
создается папка 1
выходит окно «Привет»

когда запускается через правила:
создается папка 1

Народ почему не появляется окно «Привет»



Последнее исправление: asusa52f (всего исправлений: 9)
Ответ на: комментарий от anonymous
#!/bin/bash

export XAUTHORITY=/home/admin/.Xauthority
export DISPLAY=:0.0

user="admin"
dbus="$(grep -z DBUS_SESSION_BUS_ADDRESS= "/proc/$(pgrep -u "$user" lxsession | head -n1)/environ" | sed -e 's/DBUS_SESSION_BUS_ADDRESS=//' )"
sudo su «$user» -c «DBUS_SESSION_BUS_ADDRESS=\»$dbus\" /usr/bin/notify-send

notify-send -u critical "Курилмага руйхатга олинмаган USB-flash уланди." "Курилмага руйхатга олинмаган USB-flash уланганлик хакидаги маълумот 6-булим ходимларига етказилади."


admin@pk0071:~$ /usr/bin/my_script_plug.sh 
Отсутствует passwd-запись для пользователя ««admin»»
asusa52f
() автор топика
Ответ на: комментарий от asusa52f

Нет, ты не понял, мы не добавляем строчку, а «задаем параметры» для твоего notify-send, что root запускал его от имени твоего пользователя с указанным адресом шины.

А вот относительно ошибки ничего не скажу, попробуй без sudo, просто su «$user» -c ....

anonymous
()
Ответ на: комментарий от anonymous

Еще попробуй запустить скрипт root'ом - по идее сымитировать реальное поведение - выполни sudo -i и потом запускай.

anonymous
()
Ответ на: комментарий от anonymous

Еще попробуй запустить скрипт root'ом - по идее сымитировать реальное поведение - выполни sudo -i и потом запускай.

anonymous
()
Ответ на: комментарий от anonymous
#!/bin/bash

export XAUTHORITY=/home/admin/.Xauthority
export DISPLAY=:0.0

user="admin"
dbus="$(grep -z DBUS_SESSION_BUS_ADDRESS= "/proc/$(pgrep -u "$user" lxsession | head -n1)/environ" | sed -e 's/DBUS_SESSION_BUS_ADDRESS=//' )"
su «$user» -c «DBUS_SESSION_BUS_ADDRESS=\»$dbus\" /usr/bin/notify-send

su notify-send -u critical "Курилмага руйхатга олинмаган USB-flash уланди." "Курилмага руйхатга олинмаган USB-flash уланганлик хакидаги маълумот 6-булим ходимларига етказилади."


Нечего не вышло. перезагрузил комп, подключаю флешку, уведомления нет. Через терминал запускаю скрипт с sudo работает и закрываю окно терминал, флешку вытаскиваю и подключаю заново работает. Так что нечего не изменилось. Как был так и осталось.

asusa52f
() автор топика
Ответ на: комментарий от asusa52f

Ааааааа, ну включи же мозг))) это неправильная конструкция

su «$user» -c «DBUS_SESSION_BUS_ADDRESS=\»$dbus\" /usr/bin/notify-send

su notify-send -u critical "Курилмага руйхатга олинмаган USB-flash уланди." "Курилмага руйхатга олинмаган USB-flash уланганлик хакидаги маълумот 6-булим ходимларига етказилади."
Так ты сперва отправляешь пустое сообщение (ничего не происходит), а затем отправляешь тоже что и раньше, должно быть
su «$user» -c «DBUS_SESSION_BUS_ADDRESS=\»$dbus\" /usr/bin/notify-send -u critical "Курилмага руйхатга олинмаган USB-flash уланди." "Курилмага руйхатга олинмаган USB-flash уланганлик хакидаги маълумот 6-булим ходимларига етказилади."
Попробуй запустить такой скрипт рутом (sudo -i), покжи что напишет.

anonymous
()
Ответ на: комментарий от anonymous
admin@pk0071:~$ sudo -i /usr/bin/my_script_plug.sh
su: неверный ключ — «u»
Использование: su [параметры] [ПОЛЬЗОВАТЕЛЬ]

Параметры:
  -c, --command КОМАНДА         передать КОМАНДУ вызываемой оболочке
  -h, --help                    показать данное сообщение и закончить работу
  -, -l, --login                запускать оболочку как регистрационную
  -m, -p,
  --preserve-environment        не сбрасывать переменные окружения и
                                сохранить запустившую оболочку
  -s, --shell ОБОЛОЧКА          использовать ОБОЛОЧКУ
                                вместо значения из файла passwd

admin@pk0071:~$ 
asusa52f
() автор топика
Ответ на: комментарий от anonymous

Даже вот так, у нас почему-то кавычки поменялись, в оригинале были такие - смотри на вид кавычки перед DBUS_ (не знаю влияет ли):

su "$user" -c "DBUS_SESSION_BUS_ADDRESS=\"$dbus\" /usr/bin/notify-send -u critical "Курилмага руйхатга олинмаган USB-flash уланди." "Курилмага руйхатга олинмаган USB-flash уланганлик хакидаги маълумот 6-булим ходимларига етказилади."

anonymous
()
Ответ на: комментарий от asusa52f

нет, сперва sudo -i (заходишь под рутом), потом скрипт, две разные команды. и еще чекни сообщение выше, насчет кавычек.

anonymous
()
Ответ на: комментарий от anonymous
admin@pk0071:~$ sudo -i
root@pk0071:~# /usr/bin/my_script_plug.sh
/usr/bin/my_script_plug.sh: строка 8: неожиданный EOF при поиске соответствующего `"'
/usr/bin/my_script_plug.sh: строка 10: ошибка синтаксиса: неожиданный конец файла
root@pk0071:~# 


В коде su «$user» -c «DBUS_SESSION_BUS_ADDRESS=\»$dbus\" вроде не хватает кавички.

asusa52f
() автор топика
Ответ на: комментарий от asusa52f
su "$user" -c "DBUS_SESSION_BUS_ADDRESS=\"$dbus\" /usr/bin/notify-send -u critical "Курилмага руйхатга олинмаган USB-flash уланди." "Курилмага руйхатга олинмаган USB-flash уланганлик хакидаги маълумот 6-булим ходимларига етказилади."
asusa52f
() автор топика
Ответ на: комментарий от anonymous
#!/bin/bash

export XAUTHORITY=/home/admin/.Xauthority
export DISPLAY=:0.0

user="admin"
dbus="$(grep -z DBUS_SESSION_BUS_ADDRESS= "/proc/$(pgrep -u "$user" lxsession | head -n1)/environ" | sed -e 's/DBUS_SESSION_BUS_ADDRESS=//' )"
su "$user" -c "DBUS_SESSION_BUS_ADDRESS=\"$dbus\" /usr/bin/notify-send -u critical "Курилмага руйхатга олинмаган USB-flash уланди." "Курилмага руйхатга олинмаган USB-flash уланганлик хакидаги маълумот 6-булим ходимларига етказилади."

asusa52f
() автор топика
Ответ на: комментарий от asusa52f

Блин, точно, а чего сам не исправил? Вообще, поменяй кавычки в сообщении на одинарные чтоб путаницы не было, и добавь двойную в конце.

anonymous
()
Ответ на: комментарий от anonymous

Вот так:

#!/bin/bash

export XAUTHORITY=/home/admin/.Xauthority
export DISPLAY=:0.0

user="admin"
dbus="$(grep -z DBUS_SESSION_BUS_ADDRESS= "/proc/$(pgrep -u "$user" lxsession | head -n1)/environ" | sed -e 's/DBUS_SESSION_BUS_ADDRESS=//' )"
su "$user" -c "DBUS_SESSION_BUS_ADDRESS=\'$dbus\' /usr/bin/notify-send -u critical 'Курилмага руйхатга олинмаган USB-flash уланди.' 'Курилмага руйхатга олинмаган USB-flash уланганлик хакидаги маълумот 6-булим ходимларига етказилади.'"

asusa52f
() автор топика
Ответ на: комментарий от asusa52f
#!/bin/bash

export XAUTHORITY=/home/admin/.Xauthority
export DISPLAY=:0.0

user="admin"
dbus="$(grep -z DBUS_SESSION_BUS_ADDRESS= "/proc/$(pgrep -u "$user" lxsession | head -n1)/environ" | sed -e 's/DBUS_SESSION_BUS_ADDRESS=//' )"
su "$user" -c "DBUS_SESSION_BUS_ADDRESS=\"$dbus\" /usr/bin/notify-send -u critical 'Курилмага руйхатга олинмаган USB-flash уланди.' 'Курилмага руйхатга олинмаган USB-flash уланганлик хакидаги маълумот 6-булим ходимларига етказилади.'"

asusa52f
() автор топика
Ответ на: комментарий от anonymous

Вроде заработала. Через терминал не ругается а сообщение выходит. Попробую перезагрузит комп и проверит.

asusa52f
() автор топика
Ответ на: комментарий от anonymous

Ураааа. Все заработала. Проверил вроде все нормально. Огромное спасибо «anonymous"у. Теперь если не надоел я тебе, можешь свободное время написать подробно каждую строку кода что они выполняет и каждый строке утилит. А то я проста писал но до конца не понел что сделал. СПАСИБО ЕЩЕ РАЗ anonymous.

asusa52f
() автор топика
Ответ на: комментарий от asusa52f

На самом деле, сам не полностью все понимаю. Вкратце так: мы задаем две переменные bash'у (штуке, которая выполняет наш скрипт) - имя пользователя и «адрес шины» текущей сессии. Адрес шины вычисляется по хитрой формуле. Далее, мы отправляем сообщение используя утилиту notify-send от имени текущего пользователя (скрипт запускается root'ом), с указанием адреса шины текущего сессии (DBUS_SESSION_BUS_ADDRESS=), чтобы оно отобразилось в текущей сессии пользователя. Собственно и все. Если хочешь разобраться подробно - вбивай куски скрипта в гугл.

И да, строчки export ... не нужны.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.