Монтирование флешки и запись файла при наличии её

Здраствуйте! Подскажите можно ли настроить автоматическое монтирование флешки? И можно ли как то через wb-rules отслеживать чтобы флешка вставлена.
Цель: при подключении флешки копировать /mnt/data/var/lib/wirenboard/db/data.db, далее зуммером пропищать что файл скопирован, далее извлечь флеш носитель.

1 лайк

Добрый день.
Можно. Например так:


Ну и соответственно из скрипта (или прост напрямую командой mosquitto_pub) устанавливать топик, за которым следит правило.
Ну или вообще делать копию из скрипта, не запуская никаких правил и пищать бипером - тоже.
  1. А как можно зуммером управлять из под консоли? Не дает через echo зуммер включить. root@wirenboard-AK476JRE:/sys/class/pwm/pwmchip0/pwm0# echo 1 > /sys/class/pwm/pwmchip0/pwm0/enable
    -bash: echo: write error: Invalid argument
  1. Есть ли проверенный пример такого правила udev. К сожалению я перебробывал разные варианты и все некорректно работают. Последний вариант правила:

ERNEL==“sd[a-z][0-9]”, SUBSYSTEMS==“usb”, ACTION==“add”, RUN+="/bin/mkdir -p /media/usb && /bin/mount /dev/%k /media/usb && cp /mnt/data/var/lib/wirenboard/db/data.db /media/usb"
KERNEL==“sd[a-z][0-9]”, SUBSYSTEMS==“usb”, ACTION==“remove”, RUN+="/bin/umount /media/usb && /bin/rm -r /media/usb"

Логично:

echo 1 >> /sys/class/pwm/pwmchip0/pwm0/enable

Нет, имено для подобной задачи пока не писали, примеров пока нет.
Советую вызывать не набор команд а скрипт все же, так отладить проще, выводом в текстовый лог например.

Что за контроллер?
https://wirenboard.com/wiki/GPIO
Что возвращает

cat /sys/class/pwm/pwmchip0/pwm0/enable

Ну и аппаратно независимый вариант:

mosquitto_pub -t /devices/buzzer/controls/enabled/on -m 1

cat /sys/class/pwm/pwmchip0/pwm0/enable

0

Спасибо через mosquitto_pub хороший вариант) Как то даже не подумал про него)

Проблема решена! Вот если что скрипты мало ли кому пригодиться:

logger_mount_usb.sh:

#!/bin/bash

mkdir -p /media/usb && /bin/mount /dev/sda1 /media/usb; 
cp /mnt/data/var/lib/wirenboard/db/data.db /media/usb; 
mosquitto_pub -t /devices/buzzer/controls/enabled/on -m 1 && sleep 5 && mosquitto_pub -t /devices/buzzer/controls/enabled/on -m 0

logger_umount_usb.sh

#!/bin/bash

/bin/umount /media/usb && /bin/rm -rf /media/usb

Файл udev:

KERNEL=="sd[a-z][0-9]", SUBSYSTEMS=="usb", ACTION=="add", RUN+="/mnt/data/root/logger_mount_usb.sh"
KERNEL=="sd[a-z][0-9]", SUBSYSTEMS=="usb", ACTION=="remove", RUN+="/mnt/data/root/logger_umount_usb.sh"
3 лайка

В дополнение удобнее всего воспользоваться утилитой usbmount.

apt install  ./usbmount_0.0.24_all.deb
```[usbmount_0.0.24_all.deb|attachment](upload://eyXd8fFdbKrCwm3eqAq7OyFFM3D.deb) (18.2 КБ)
1 лайк

И пакет:
usbmount_0.0.24_all.deb (18.2 КБ)