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


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Проверка подключено ли устройство  (Прочитано 3546 раз)

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

Оффлайн maksd

  • Автор темы
  • Любитель
  • *
  • Сообщений: 69
    • Просмотр профиля
На данный момент скрипт выглядит так
#!/bin/bash
bluetoothctl << eof
connect 00:18:09:84:91:DF
eof
if ps aux | grep google-play-music-desktop-player | grep -v grep; then
notify-send "GPMDP" "Запущен" -i gtk-info
else
google-play-music-desktop-player
fi
Нужно чтобы он проверил правильное ли устройство подключено и только в случае, если подключено 00:18:09:84:91:DF переходил к запуску GPMDP

Пользователь добавил сообщение 08 Август 2019, 01:17:24:
Пошел другим путем
#!/bin/bash
if ps aux | grep google-play-music-desktop-player | grep -v grep; then
notify-send "GPMDP" "Запущен" -i gtk-info
else
clear >> list_sinks
pacmd list-sinks >> /home/umd/list_sinks
if grep -q 'device.string = "00:18:09:84:91:DF"' /home/umd/list_sinks
then
google-play-music-desktop-player
else
notify-send "Внимание" "Сперва нужно подключить наушники" -i gtk-info./.
fi
fi
Почти, но нужно перезаписывать файл. Пока что не разобрался как
« Последнее редактирование: 08 Август 2019, 01:30:11 от maksd »

Оффлайн maksd

  • Автор темы
  • Любитель
  • *
  • Сообщений: 69
    • Просмотр профиля
Re: Проверка подключено ли устройство
« Ответ #1 : 08 Август 2019, 21:55:17 »
Похоже это никого не интересует, но я cделал два скрипта
#!/bin/bash
cp /dev/null /home/umd/.lsin
if ps aux | grep google-play-music-desktop-player | grep -v grep; then
notify-send "GPMDP" "Запущен" -i gtk-info
else
pacmd list-sinks > /home/umd/.lsin
if grep -q 'device.string = "00:18:09:84:91:DF"' /home/umd/.lsin
then
google-play-music-desktop-player
cp /dev/null /home/umd/.lsin
else
notify-send "Внимание" "Сперва нужно подключить наушники" -i gtk-info
./.con
    fi
fi
А второй
#!/bin/bash
bluetoothctl << eof
connect 00:18:09:84:91:DF
eof

Оффлайн zg_nico

  • Модератор форума
  • Старожил
  • *
  • Сообщений: 2650
  • Nil mortalibus arduum est
    • Просмотр профиля
Re: Проверка подключено ли устройство
« Ответ #2 : 08 Август 2019, 22:02:33 »
maksd, не вполне понятно что Вы пытаетесь соорудить. При подключении любого устройства генерируется соответствующее событие в udev. Можно хоть по типу (bluetooth-гарнитура), хоть по вендору, хоть по конкретной паре VID/PID выполнять произвольные скрипты в системе. У меня, к примеру, при отключении вебкамеры выводится соответствующее оповещение в ноутбуке. Принцип описан здесь.
Сейчас проверил у себя - udevadm monitor на подключение и отключение bluetooth-гарнитуры реагирует:KERNEL[10791.738017] add      /devices/pci0000:00/0000:00:14.0/usb1/1-10/1-10:1.0/bluetooth/hci0/hci0:256 (bluetooth)
UDEV  [10791.744726] add      /devices/pci0000:00/0000:00:14.0/usb1/1-10/1-10:1.0/bluetooth/hci0/hci0:256 (bluetooth)
KERNEL[10792.002201] add      /devices/virtual/input/input26 (input)
KERNEL[10792.002405] add      /devices/virtual/input/input26/event19 (input)
UDEV  [10792.007643] add      /devices/virtual/input/input26 (input)
UDEV  [10792.038256] add      /devices/virtual/input/input26/event19 (input)

KERNEL[10822.420422] remove   /devices/virtual/input/input26/event19 (input)
UDEV  [10822.423900] remove   /devices/virtual/input/input26/event19 (input)
KERNEL[10822.444270] remove   /devices/virtual/input/input26 (input)
UDEV  [10822.449099] remove   /devices/virtual/input/input26 (input)
KERNEL[10824.628280] remove   /devices/pci0000:00/0000:00:14.0/usb1/1-10/1-10:1.0/bluetooth/hci0/hci0:256 (bluetooth)
UDEV  [10824.632537] remove   /devices/pci0000:00/0000:00:14.0/usb1/1-10/1-10:1.0/bluetooth/hci0/hci0:256 (bluetooth)
Стало быть привязаться есть к чему - это и есть самый оптимальный способ организовать триггер, если я правильно трактую Ваше желание в исходном Вашем сообщении.
Thunderobot G150-D2: Intel SkyLake Core i7-6700HQ 2.60GHz, 8Gb DDR4 2133 MHz, Intel HD530, NVidia GeForce GTX 960M 2Gb.  Ubuntu 16.04 64x [Unity], KUbuntu 18.04 64x.

Оффлайн maksd

  • Автор темы
  • Любитель
  • *
  • Сообщений: 69
    • Просмотр профиля
Re: Проверка подключено ли устройство
« Ответ #3 : 10 Август 2019, 21:08:20 »
Стало быть привязаться есть к чему - это и есть самый оптимальный способ организовать триггер, если я правильно трактую Ваше желание в исходном Вашем сообщении.
стало быть вы все верно поняли. только вот я здесь гуглил как скрипт запускать каждые х секунд или минут и так и не смог запустить его по расписанию. В принципе вы правильно все поняли. Если подключена гарнитура, автоматически запустить плеер и если запущен плеер то автоматически подключать гарнитуру.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 26693
    • Просмотр профиля
Re: Проверка подключено ли устройство
« Ответ #4 : 11 Август 2019, 14:12:29 »
как скрипт запускать каждые х секунд или минут
Зачем?

Пользователь добавил сообщение 11 Август 2019, 14:13:02:
и если запущен плеер то автоматически подключать гарнитуру.
У вашего компа есть руки? Сами то поняли, что сказали?
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн maksd

  • Автор темы
  • Любитель
  • *
  • Сообщений: 69
    • Просмотр профиля
Re: Проверка подключено ли устройство
« Ответ #5 : 15 Август 2019, 21:13:24 »
У вашего компа есть руки? Сами то поняли, что сказали?
Я то понял. А вот у вас, видимо, комментарий ради комментария:-)

Оффлайн zg_nico

  • Модератор форума
  • Старожил
  • *
  • Сообщений: 2650
  • Nil mortalibus arduum est
    • Просмотр профиля
Re: Проверка подключено ли устройство
« Ответ #6 : 20 Август 2019, 04:28:22 »
Если подключена гарнитура, автоматически запустить плеер и если запущен плеер то автоматически подключать гарнитуру
Первую часть реализовать еще возможно. Вторая действительно невыполнима, т.к. машина Вам сама гарнитуру со стола не возьмет, кнопку включения не нажмет, как совершенно справедливо заметил ранее AnrDaemon.
Пример составления правила для гарнитуры bluetooth: при подключении гарнитуры если открыть терминал и ввести команду dmesg, я вижу input: 1C:52:16:04:0A:FE as /devices/virtual/input/input37Тут же выполняю команду udevadm info -a -p /devices/virtual/input/input37В ответе вижу:    KERNEL=="input51"
    SUBSYSTEM=="input"
    DRIVER==""
    ATTR{name}=="1C:52:16:04:0A:FE"
    ATTR{phys}==""
    ATTR{properties}=="0"
    ATTR{uniq}==""
Из всего вышеобозначенного нас интесресуют следующие моменты:SUBSYSTEM=="input", ATTR{name}=="1C:52:16:04:0A:FE"Этих признаков хватит для того, чтобы инициировать вызов нашей команды при появлении в системе данного устройства. Составляем правило. Само правило, суть - обычный текстовый файл. Выполняем в терминале команду sudo nano /etc/udev/rules.d/99-myBTHeadset.rulesи вводим такой вот код:ACTION=="add", SUBSYSTEMS=="input", ATTR{name}=="1C:52:16:04:0A:FE", RUN+="команда1"
ACTION=="remove", SUBSYSTEMS=="input", ATTRS{name}=="1C:52:16:04:0A:FE", RUN+="команда2"
Сохраняем (Ctrl+X -> Y -> Enter), после чего выполняем команду sudo udevadm control --reloadДалее пробуем подключить гарнитуру. Будет выполнена команда1Если мы отключим гарнитуру, будет выполнена команда2Следует понимать, что втупую подставить вместо команда1/команда2 google-play-music-desktop-playerне получится, т.к. команда1 и команда2 будут выполняться не от имени текущего пользователя, а от имени суперпользователя, и переменные окружения будут соответствующие (та же DISPLAY не определена). Потому по первой ссылке, что я Вам дал, и была мышиная возня с просмотром сеансов пользователей через вывод команды who в цикле. Проще и удобнее варганить по тому же принципу - вместо команда1 и команда2 указываем полный путь к скрипту. Скрипт делаем параметрическим. В скрипте предусматриваем необходимую логику работы. Сохраняем и применяем правило, после чего вживую выполняем отладку скрипта.
« Последнее редактирование: 01 Сентябрь 2019, 07:41:52 от zg_nico »
Thunderobot G150-D2: Intel SkyLake Core i7-6700HQ 2.60GHz, 8Gb DDR4 2133 MHz, Intel HD530, NVidia GeForce GTX 960M 2Gb.  Ubuntu 16.04 64x [Unity], KUbuntu 18.04 64x.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 26693
    • Просмотр профиля
Re: Проверка подключено ли устройство
« Ответ #7 : 20 Август 2019, 21:20:44 »
dbus же ж.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн maksd

  • Автор темы
  • Любитель
  • *
  • Сообщений: 69
    • Просмотр профиля
Re: Проверка подключено ли устройство
« Ответ #8 : 20 Август 2019, 23:02:26 »
машина Вам сама гарнитуру со стола не возьмет, кнопку включения не нажмет
Так я ж не об этом говорю. Бывает, что устройство просто отключено и нужно зайти в менеджер bluetooth и подключить его вручную. Оно при этом включено и комп его видит.

Оффлайн ALiEN175

  • Старожил
  • *
  • Сообщений: 3320
  • Capture the truth
    • Просмотр профиля
    • Всезнайка
Re: Проверка подключено ли устройство
« Ответ #9 : 20 Август 2019, 23:18:21 »
maksd, что простите?
устройство просто отключено
...
Оно при этом включено
ASUS M5A78L-M LX3 :: AMD FX-4330 :: 8 GB RAM :: AMD Radeon R7 260X :: ZSH
SAMSUNG N150 :: Intel Atom N450 :: 2 GB RAM :: Intel GMA 3150 :: ZSH

Оффлайн zg_nico

  • Модератор форума
  • Старожил
  • *
  • Сообщений: 2650
  • Nil mortalibus arduum est
    • Просмотр профиля
Re: Проверка подключено ли устройство
« Ответ #10 : 22 Август 2019, 13:48:38 »
Бывает, что устройство просто отключено и нужно зайти в менеджер bluetooth и подключить его вручную. Оно при этом включено и комп его видит.
Если я правильно понимаю о чем Вы - то, как мне кажется, Вам просто нужно добавить устройство (гарнитуру) в список доверенных в настройках bluetooth. Тогда всякий раз при его обнаружении Ubuntu будет автоматически его подключать. Если этого не сделать - поведение как раз как Вы описываете, т.е. при включении гарнитуры приходится лезть в настройки bluetooth, и руками подключать устройство (гарнитуру).
Thunderobot G150-D2: Intel SkyLake Core i7-6700HQ 2.60GHz, 8Gb DDR4 2133 MHz, Intel HD530, NVidia GeForce GTX 960M 2Gb.  Ubuntu 16.04 64x [Unity], KUbuntu 18.04 64x.

Оффлайн maksd

  • Автор темы
  • Любитель
  • *
  • Сообщений: 69
    • Просмотр профиля
Re: Проверка подключено ли устройство
« Ответ #11 : 30 Август 2019, 22:31:22 »
не получится, т.к. команда1 и команда2 будут выполняться не от имени текущего пользователя, а от имени суперпользователя, и переменные окружения будут соответствующие (та же DISPLAY не определена).
Что то ничего не получается. Не совсем понимаю. В примере есть фрагмент скрипта
case "$1" in
-on) sudo -u имяпользователя блаблабла
а  в правилах udev
RUN+="/home/[ЮЗВЕРЬ]/.myOwnScripts/For_udev/WebCamNotify -on"
Тот on который в скрипте берется из правил? Идем по примеру: Когда включается камера, то в $1 присваивается on(потому что в правиле так прописано. Извиняюсь если предположение про присваивание полный бред) и запускается команда, которая находится в скрипте
sudo -u имяпользователя команда Или я должен в case и в правило что-то другое писать? Я не понимаю. сейчас правило у меня
ACTION=="add", SUBSYSTEMS=="input", ATTRS{name}=="00:18:09:84:91:DF", RUN+="./.cont -on"
а  в скрипте

#!/bin/bash

#
export DISPLAY=:0
case "$1" in
-on) sudo -u umd google-play-music-desktop-player;;
esac
« Последнее редактирование: 30 Август 2019, 22:39:40 от maksd »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 26693
    • Просмотр профиля
Re: Проверка подключено ли устройство
« Ответ #12 : 31 Август 2019, 09:53:21 »
Запустить с правами пользователя =/= запустить в сессии пользователя.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн zg_nico

  • Модератор форума
  • Старожил
  • *
  • Сообщений: 2650
  • Nil mortalibus arduum est
    • Просмотр профиля
Re: Проверка подключено ли устройство
« Ответ #13 : 31 Август 2019, 16:23:29 »
maksd, Вы сперва всё упростите, а потом только уже усложняйте, и всякий раз проверяйте - работает все еще, или уже нет. Откройте терминал, выполните в нем хотя бы такой уход на root'asudo -iСтрока приветствия изменится с user@server:~$на root@server:~#(заранее оговорюсь, что для выхода из такой сессии команда exit в том же окне терминала). Теперь в этом терминале проверяйте свою команду:sudo -u umd google-play-music-desktop-playerЗаработало? Скорее всего нет. Посты по ссылкам как правило читать принято полностью, а не самые понравившиеся моменты. Вот Вами пропущенный сегмент.
(Нажмите, чтобы показать/скрыть)
Соответственно Вам следует попробовать (а я так понимаю, что umd - это у Вас имя пользователя):sudo -u umd DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus google-play-music-desktop-playerЕжели при этой команде окно плеера запустится, то можно прямо её и скормить udev вместо "команда1" в этом примере. Если не запустится - попробуйте ввести sudo -u umd DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus notify-send ALERTОповещение с текстом "ALERT" появляется? Если появляется - значит проблема остается только в том, как правильно запустить сам google-play-music-desktop-player, какие еще переменные окружения надо ему указать (может ему путь к конфигурационному файлу задать надо, или еще чего). Ну и если такая цепочка отработала - то далее уже можно вытаскивать это все в скрипт, где вводить дополнительные проверки: запущен ли уже экземпляр плеера, если запущен - то дать текущему команду на воспроизведение, если не запущен - запустить новый и дать команду и т.п. А то Вы сразу в дебри полезли, и удивляетесь, что при этом ничего не работает :)
Thunderobot G150-D2: Intel SkyLake Core i7-6700HQ 2.60GHz, 8Gb DDR4 2133 MHz, Intel HD530, NVidia GeForce GTX 960M 2Gb.  Ubuntu 16.04 64x [Unity], KUbuntu 18.04 64x.

Оффлайн maksd

  • Автор темы
  • Любитель
  • *
  • Сообщений: 69
    • Просмотр профиля
Re: Проверка подключено ли устройство
« Ответ #14 : 31 Август 2019, 20:33:05 »
path=/run/user/1000/bus
А у GPMDP есть свой файл в /run/user/1000/snap.google-play-music-desktop-player/user точно не его нужно указвать в этом фрагменте.
И еще: разве мак адрес может быть в атрибуте name? я вообще не могу нагуглить аттрибута name.
И еще только что заметил что udevadm info -a -n имя_устройства
где вместо "имя устройства" имя или мак устройства, говорит что такого устройства нет. device node not found, если быть точнее.
« Последнее редактирование: 31 Август 2019, 20:50:59 от maksd »

 

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