[РЕШЕНО] Автомонтирование CD/DVD через udev

Как ни странно, но я не нашёл на эту тему ничего вразумительного. Более того, вот тут и вовсе ничего нет, кроме малодушной рекомендации воспользоваться всякими udevil. Работающее правило я сделал, но через вспомогательный скрипт:
cat /etc/udev/rules.d/14-autodvd.rules
KERNEL=="sr0", ACTION=="change", RUN+="/usr/local/bin/autodvd"
cat /usr/local/bin/autodvd
#!/bin/bash
FSTYPE=`lsblk -no FSTYPE /dev/sr0`
if [ -n "$FSTYPE" ]; then
  mount -t $FSTYPE  /dev/sr0 /media/cdrom
else
  umount  /dev/sr0
fi
А вопрос у меня - почему эта же логика не срабатывает прямо в правиле, без скрипта. Вот такое правило - не монтирует:
KERNEL!="sr0", GOTO="dvd_auto_mount_end"
IMPORT{program}="lsblk -Po FSTYPE /dev/sr0"
ENV{FSTYPE}!="", RUN+="/usr/bin/mount -t %E{FSTYPE} -o ro /dev/sr0 /media/cdrom"
ENV{FSTYPE}=="", RUN+="/usr/bin/umount /dev/sr0"
# Exit
LABEL="dvd_auto_mount_end"

P.S. Ответ тут.
KERNEL=="sr0", ACTION=="change",RUN+="/usr/bin/mount -o ro /dev/sr0 /media/cdrom"
Ошибки в тексте-неповторимый стиль автора©
ind.indeviral
KERNEL=="sr0", ACTION=="change",RUN+="/usr/bin/mount -o ro /dev/sr0 /media/cdrom"
А попробовать?
С этого я начинал, оно не даёт вынуть диск. Как только лоток выдвигается, mount его тут же вдвигает обратно.
(Что в моём неработающем правиле нет ACTION=="change", так это просто потому, что никаких других действий и не бывает. Если его добавить, точно так же не работает. )
тоды не судьба можете конечно поискать что нить что меняется и записать в правило, но я не нашёл... (
udevadm info -a -p /sys/block/sr0

p.s. я лично использую в fstab, x-systemd.automount, незнаю насколько это правильно но работает)
ещё можно что нить отламать, тогда назад заежать не будет)
Ошибки в тексте-неповторимый стиль автора©
ind.indeviral
тоды не судьба можете конечно поискать что нить что меняется и записать в правило, но я не нашёл... (
Так FSTYPE же меняется в выдаче lsblk. В скрипте это без проблем анализируется, а прямо в правиле почему-то не получается.
ind.indeviral
udevadm info -a -p /sys/block/sr0
Э... А как его парсить-то в правиле? Для import предполагается формат как env: список из ИМЯ=значение
KERNEL=="sr0", ATTR{events}==" " (например), RUN+=
Ошибки в тексте-неповторимый стиль автора©
ind.indeviral
KERNEL=="sr0", ATTR{events}==" " (например), RUN+=
Но вопрос-то не в этом, тут, в данном случае, ничего полезного нет. Вопрос, почему анализ вывода lsblk не срабатывает.
KERNEL=="sr0", PROGRAM="/usr/bin/lsblk -dnro FSTYPE /dev/sr0",RESULT=="",RUN+="/usr/bin/mkdir -p /media/umount"
Когда вставляете диск, при срабатывании правила lsblk не успевает увидеть fs. Всё бы ничего так как когда вы его вынимаете диск, опять отрабатывает udev и lsblk в этот момент видит fs и по этому правилу ничего не делает, и на этом бы всё закончелось, а нет. udev срабатывает ещё раз и опять 25))

p.s. может это специфика моей железки и у вас оно будет работать замечательно, завтро проверим на чём нить другом))
Ошибки в тексте-неповторимый стиль автора©
ind.indeviral
KERNEL=="sr0", PROGRAM="/usr/bin/lsblk -dnro FSTYPE /dev/sr0",RESULT=="",RUN+="/usr/bin/mkdir -p /media/umount"
Когда вставляете диск, при срабатывании правила lsblk не успевает увидеть fs. Всё бы ничего так как когда вы его вынимаете диск, опять отрабатывает udev и lsblk в этот момент видит fs и по этому правилу ничего не делает, и на этом бы всё закончелось, а нет. udev срабатывает ещё раз и опять 25))
Честно говоря, я в этом потоке сознания ничего не понял. И вообще, у меня без внешнего скрипта не монтируется, так что об отмонтировании рановато говорить.
ой, это не отмонтирование я просто там много сточек написал)) оно папку umount создаёт)) ну да ладно...
KERNEL=="sr0", PROGRAM="/usr/bin/lsblk -dnro FSTYPE /dev/sr0",RESULT=="",RUN+="/usr/bin/mount /dev/sr0 /media/cdrom"
так понятнее)
Ошибки в тексте-неповторимый стиль автора©
 
Зарегистрироваться или войдите чтобы оставить сообщение.