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


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

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

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

Оффлайн maksd

  • Автор темы
  • Любитель
  • *
  • Сообщений: 69
    • Просмотр профиля
Проверка подключено ли устройство
« : 07 Августа 2019, 14:43:08 »
На данный момент скрипт выглядит так
#!/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

  • Заслуженный пользователь
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 3513
  • 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

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

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

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

Оффлайн maksd

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

Оффлайн zg_nico

  • Заслуженный пользователь
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 3513
  • 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

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

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

Оффлайн maksd

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

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6725
  • 20% Cooler
    • Просмотр профиля
Re: Проверка подключено ли устройство
« Ответ #9 : 20 Августа 2019, 23:18:21 »
maksd, что простите?
устройство просто отключено
...
Оно при этом включено
🖥 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

Оффлайн zg_nico

  • Заслуженный пользователь
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 3513
  • 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

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

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

Оффлайн zg_nico

  • Заслуженный пользователь
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 3513
  • 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.029 секунд. Запросов: 25.