Intereting Posts
Ошибка LLVM вместо 3D-ускорения в стабильной Debian Как загрузить FreeBSD, установленную во втором разделе внешнего диска centos 6 ftp server -R не работает, когда пользователь создает новую папку в своей папке Файлы с изменением хвоста Как я могу разрешить pgrouting с включенным postgresql и postgis? Установленный Oracle Java, но при установке программного обеспечения я получаю `Ваша версия Java не поддерживается. ' Почему LDAP пытается подключиться по имени хоста вместо localhost? Благодаря автоматическому подключению Bluetooth к гарнитуре приемник A2DP недоступен Уменьшение физического объема LVM на вершине mdadm деградировало массив RAID, добавив запасную и восстановив его Как сделать эти старые графические интерфейсы (например, установщик debian / arch) Установка инсталляции Что такое высокая память и низкая память в Linux? Рекомендации дистрибутива linux для настройки сервера? Как вставить vmstat вывод в файл, поддерживающий только самую последнюю запись всегда Как просмотреть мой текущий пользователь / пароль в bash?

Как определить вставку флоппи-диска в RHEL 7 и выполнить скрипт?

У меня есть VM RedHat 7, работающая на инфраструктуре VMware ESXi 6. Мне нужно обнаружить событие вставки гибкого диска, а затем запустить скрипт на основе этого события вставки.

Мой первоначальный подход состоял в том, чтобы попытаться использовать правила Udev, чтобы инициировать выполнение скрипта на вставке флоппи, но это событие никогда не запускается.

/etc/udev/rules.d/99-my.rules

SUBSYSTEM=="block", KERNEL=="fd0", ACTION=="change", RUN+="sh -c /my-custom-script" 

Когда это не сработает, я попытался обойти проблему и вместо того, чтобы выполнять на вставке, я написал задание cron, которое пытается установить дискету каждые две минуты и тесты, чтобы проверить, есть ли в точке монтирования определенные файлы. Это, однако, вызывает некоторые неприятные результаты, когда нет флоппи-диска:

 end_request: I/O error, dev fd0, sector0 

Поэтому я обнаружил, что пытаюсь понять, почему правило Удева не работает. Является ли мой подход с правилом Удева неправильным или есть ли другой способ достичь этого?

Из того, что я знаю udev, не предоставляет никаких средств для мониторинга дисководов гибких дисков. Дисководы не предоставляют никаких средств для обнаружения вставки, т.е. для обнаружения вставки диска требуется непрерывный опрос привода.

Утилита diskd делает то, что вам нужно. Он непрерывно обследует диск и выдает или выполняет команду при вставке. Он является частью fdutils , который можно установить из репозиториев в Debian. В RHEL / Fedora вам придется скомпилировать источники.

Применение:

 diskd [-d drive] [-i interval] [-e command] 

Следующее должно отслеживать диск для диска, а затем вставить его, а затем выйти. Я не пробовал это, потому что у меня только IDE Floppy Drive (LS-120 SuperDisk).

 diskd -d /dev/fd0 -e "udisks --mount /dev/fd0 --mount-fstype=vfat" 

Следует отметить, что вам необходимо быть членом группы floppy чтобы иметь возможность запускать это как пользователь без полномочий root, поскольку ему необходим прямой доступ к гибкому устройству (например, /dev/fd0 ). Он использует FDPOLLDRVSTAT ioctl (см. man 4 fd ) для опроса устройства.

Также в man-странице / документации есть следующее предупреждение:

Эта программа работает путем переключения двигателя в течение очень короткого интервала, а затем пытается отслеживать -1. Это может повредить аппаратные средства в конечном итоге. Известно, что Amigas, которые также используют эти методы, имеют проблемы с дисковыми дисками, которые уже не работают после нескольких месяцев использования.

Я не уверен, действительно ли это серьезная проблема, но иметь запасной диск под рукой, вероятно, полезен, если вы собираетесь использовать это в настройках производства. Они уже не так дороги, не так ли?

(Утилита fdmountd звучит довольно древней, и я очень скептически отношусь к тому, работает ли она с нормальными дисками в формате FAT12 на «более новом» ядре.)