Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Есть ли у Ubuntu callback отмонтирования устройства?  (Прочитано 593 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Roukff

  • Автор темы
  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Всем доброго времени суток!
Есть комп. Есть usb-порт. В этот порт вставлена флешка/жесткий диск
Задача: нужно реализовать, чтобы при вытаскивании флешки перезапускалась определенная программа
Вопрос: как можно отловить событие отмонтирования флешки? Мб у убунты по этому поводу есть callback?
Пишу на питоне, поэтому будет круто если найдется пример на нем, но в принципе язык программирования не особо важен.
Первая идея у меня была это демон, который слушает все время вывод команды lsusb и сравнивает количество строк, но это имхо такой бред.
Надеюсь, что я понятно описал свою проблему и у вас найдется на нее решение!

Оффлайн БТР

  • Заслуженный пользователь
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 6293
    • Просмотр профиля
правила udev

Оффлайн aSmile

  • Активист
  • *
  • Сообщений: 755
    • Просмотр профиля
Не вчитывался, но похоже, это оно
http://mindbending.org/en/python-and-udisks-part-4

Edit
С udev, может, и правильнее будет

Оффлайн Roukff

  • Автор темы
  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Спасибо за udev, погуглил, должно помочь.
Как я понял, мне в конфиг надо будет записать
SUBSYSTEMS=="usb", DRIVERS=="usb", ACTION=="remove", RUN+="path/to/your/script.sh"
Но это пока непроверенная информация.

Пользователь решил продолжить мысль 11 Ноября 2014, 16:10:07:
Итак. Вопрос немного не по теме:
udev мне помог, но есть одна загвоздка: вот мои правила для udev:
SUBSYSTEMS=="usb", DRIVERS=="usb", ACTION=="remove", RUN+="/usr/bin/sudo killall chrome -9"
SUBSYSTEMS=="usb", DRIVERS=="usb", ACTION=="remove", RUN+="/usr/bin/sudo /opt/google/chrome/google-chrome --incognito --app=http://127.0.0.1:8000/"

Эти две команды делают следующее: первая строка убивает все процессы google-chrome. Вторая запускает chrome определенный сайт (в данном случае локалхост) как отдельное приложение.
Проблема вся в том, что первая строчка отрабатывает на ура, а вторая нет. Пробовал варианты (менял только параметр RUN):
/usr/bin/sudo /opt/google/chrome/google-chrome
/usr/bin/sudo google-chrome
Ничего не помогает. Эти же строки если просто запустить из консоли или даже из баш-скрипта, работают корректно.
В чем проблема? Мой мозг никак не может понять этого в виду малых знаний
« Последнее редактирование: 11 Ноября 2014, 16:10:07 от Roukff »

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 7820
  • We were here
    • Просмотр профиля
а если так?
SUBSYSTEMS=="usb", DRIVERS=="usb", ACTION=="remove", RUN+="/usr/bin/sudo killall chrome -9 && /usr/bin/sudo /opt/google/chrome/google-chrome --incognito --app=http://127.0.0.1:8000/"
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн Roukff

  • Автор темы
  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Увы, нет. Сейчас проверил и узнал, что через udev строка вызова хрома не работает вообще. Даже одна. Но зато еще узнал, что у меня само правило неправильно написано, оно от одной флешки вызывается кучу раз. Буду разбираться сейчас

Пользователь решил продолжить мысль [time]12 Ноябрь 2014, 11:53:53[/time]:
Решения не нашел, тему закрою, создам новую с именно этим вопросом

Пользователь решил продолжить мысль 12 Ноября 2014, 12:26:23:
Решение по проблеме открытия приложений здесь: https://forum.ubuntu.ru/index.php?topic=252994.0
« Последнее редактирование: 12 Ноября 2014, 12:26:23 от Roukff »

 

Страница сгенерирована за 0.03 секунд. Запросов: 26.