Мне нужна ваша помощь. :-) Во-первых, я хочу извинить за свой английский, я из Германии.
У меня есть сценарий Bash, который должен исполняться каждый раз, когда Android-телефон подключается через USB. Это делается моим правилом udev. Он работает, но есть большая проблема.
Немного больше. Мой скрипт Bash должен устанавливать приложения на всех подключенных Android-телефонах отдельно. Для этого я использую Android Debug Bridge (ADB) и режим USB-Debugging на устройстве Android. Каждый раз, когда вы подключаете телефон к USB-порту, вам сначала нужно разрешить подключение USB-отладки на телефоне для доступа к нему через ADB.
Как я уже сказал, это работает, но при подключении устройства смонтировано и попросите разрешить USB-отладку. Затем скрипт запускается и немедленно останавливается и ждет, потому что устройство отключает себя. Затем устройство снова подключится, снова попросит разрешить USB-отладку и вызывается второй экземпляр сценария bash, и теперь исполняются оба экземпляра скрипта.
Надеюсь, кто-то может мне помочь.
Вот какой-то код.
Правило UDEV
ACTION=="add", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="0bb4", MODE="0666", GROUP="plugdev" RUN+="/usr/local/bin/tmp.sh $attr{serial}"
ACTION=="add", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="12d1", MODE="0666", GROUP="plugdev" RUN+="/usr/local/bin/tmp.sh $attr{serial}"
ACTION=="add", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="24e3", MODE="0666", GROUP="plugdev" RUN+="/usr/local/bin/tmp.sh $attr{serial}"
ACTION=="add", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="17ef", MODE="0666", GROUP="plugdev" RUN+="/usr/local/bin/tmp.sh $attr{serial}"
ACTION=="add", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="1004", MODE="0666", GROUP="plugdev" RUN+="/usr/local/bin/tmp.sh $attr{serial}"
ACTION=="add", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="22b8", MODE="0666", GROUP="plugdev" RUN+="/usr/local/bin/tmp.sh $attr{serial}"
ACTION=="add", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="10a9", MODE="0666", GROUP="plugdev" RUN+="/usr/local/bin/tmp.sh $attr{serial}"
ACTION=="add", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="1d4d", MODE="0666", GROUP="plugdev" RUN+="/usr/local/bin/tmp.sh $attr{serial}"
ACTION=="add", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="05c6", MODE="0666", GROUP="plugdev" RUN+="/usr/local/bin/tmp.sh $attr{serial}"
ACTION=="add", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="054c", MODE="0666", GROUP="plugdev" RUN+="/usr/local/bin/tmp.sh $attr{serial}"
ACTION=="add", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="0fce", MODE="0666", GROUP="plugdev" RUN+="/usr/local/bin/tmp.sh $attr{serial}"
ACTION=="add", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="091e", MODE="0666", GROUP="plugdev" RUN+="/usr/local/bin/tmp.sh $attr{serial}"
ACTION=="add", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="04e8", MODE="0666", GROUP="plugdev" RUN+="/usr/local/bin/tmp.sh $attr{serial}"
[d8 ] Правило UDEV #!/bin/bash
echo /usr/local/bin/installApps.sh $1 | at now
installApps.sh вызвано через tmp.sh
#!/bin/bash
cd /home/android/Schreibtisch/Apps
adb -s $1 wait-for-device
for APK in $(ls *.apk);
do
adb -s $1 install $APK
done
installApps.sh вызывается через tmp.sh [ ! d11] Вот мой вывод udevadm monitor
KERNEL[384.540419] add /devices/pci0000:00/0000:00:1d.7/usb1/1-2 (usb)
KERNEL[384.659326] add /devices/pci0000:00/0000:00:1d.7/usb1/1-2/1-2:1.0 (usb)
KERNEL[384.660123] add /devices/pci0000:00/0000:00:1d.7/usb1/1-2/1-2:1.1 (usb)
KERNEL[384.660969] add /devices/pci0000:00/0000:00:1d.7/usb1/1-2/1-2:1.1/tty/ttyACM0 (tty)
KERNEL[384.663343] add /devices/pci0000:00/0000:00:1d.7/usb1/1-2/1-2:1.2 (usb)
UDEV [384.663375] add /devices/pci0000:00/0000:00:1d.7/usb1/1-2 (usb)
KERNEL[384.663386] add /devices/pci0000:00/0000:00:1d.7/usb1/1-2/1-2:1.3 (usb)
UDEV [384.669236] add /devices/pci0000:00/0000:00:1d.7/usb1/1-2/1-2:1.0 (usb)
UDEV [384.670955] add /devices/pci0000:00/0000:00:1d.7/usb1/1-2/1-2:1.3 (usb)
UDEV [384.672776] add /devices/pci0000:00/0000:00:1d.7/usb1/1-2/1-2:1.1 (usb)
UDEV [384.674355] add /devices/pci0000:00/0000:00:1d.7/usb1/1-2/1-2:1.2 (usb)
UDEV [384.690927] add /devices/pci0000:00/0000:00:1d.7/usb1/1-2/1-2:1.1/tty/ttyACM0 (tty)
. Выход этого никоим образом не отличается на моем втором USB-порту.
Редактировать 2:
Мне как-то удалось уменьшить ошибки. Но теперь есть несколько другая проблема, и я не знаю, поможет ли файл блокировки. Теперь почти на каждом 10-м устройстве не все приложения установлены. Я проверил в файле журнала, в чем проблема. Сообщение «Разрешить USB-отладка» отображается только один раз, но правило udev выполняется дважды в тот же момент за одну секунду. Но это происходит, как сказано только на каждом 10-м устройстве. Что может быть причиной этого и как я могу это предотвратить?