скрипт оболочки для монтирования внешнего устройства к точке монтирования

Вопрос или проблема

Я хочу написать скрипт для монтирования внешнего устройства в определенную точку монтирования, например, скажем /mnt. Позвольте мне уточнить мой вопрос, предположим, что я запускаю fdisk -l в терминале, я получаю следующий вывод:

Идентификатор диска: 0x00000000

   Устройство Загрузка    Начало       Конец      Блоки   Id  Система
/dev/sdb1   *           1         493     3956672    6  FAT16

Итак, я хочу написать скрипт, который, когда я его запущу, проверяет, где смонтировано внешнее устройство (в моем случае sdb1), и автоматически берет этот раздел и монтирует его в /mnt.

У меня Scientific Linux 6.4 (32 бита).

Я думаю, что udev может помочь.

Сначала вам нужно получить серийный номер вашего устройства:

udevadm info -a -p $(udevadm info -q path -n /dev/sdb) | grep -i serial

Затем добавьте правило в /etc/udev/rules.d/:

SUBSYSTEMS=="usb",ACTION=="add",KERNEL=="sd?1", ATTRS{serial}=="HARDDRIVESERIAL", RUN+="/bin/mount /dev/%k /mnt/",OPTIONS="last_rule"

Ответ или решение

Чтобы создать оболочку скрипта, который позволяет автоматически монтировать внешнее устройство в определённую директорию, например, в /mnt, мы можем использовать udev для автоматизации процесса на уровне ядра. В данном ответе мы рассмотрим, как это можно сделать на примере операционной системы Scientific Linux 6.4 (32 бита).

Шаг 1: Определение устройства

Сначала необходимо определить, какое именно устройство вы хотите смонтировать. Запустите команду fdisk -l, чтобы найти нужное устройство:

fdisk -l

Например, вы можете увидеть такое устройство:

/dev/sdb1   *           1         493     3956672    6  FAT16

В данном случае нас интересует /dev/sdb1.

Шаг 2: Получение серийного номера устройства

Чтобы использовать udev для автоматической настройки монтирования, необходимо получить серийный номер вашего устройства. Это можно сделать с помощью следующей команды:

udevadm info -a -p $(udevadm info -q path -n /dev/sdb) | grep -i serial

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

Шаг 3: Создание правила для udev

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

  1. Откройте текстовый редактор с правами суперпользователя и создайте файл правил udev. Например, используйте nano или vim:
sudo nano /etc/udev/rules.d/99-usb-mount.rules
  1. Вставьте следующее правило, заменив HARDDRIVESERIAL на фактический серийный номер вашего устройства:
SUBSYSTEM=="block", ACTION=="add", KERNEL=="sdb1", ATTRS{serial}=="HARDDRIVESERIAL", RUN+="/bin/mount /dev/%k /mnt", OPTIONS+="last_rule"

Шаг 4: Применение правила

После создания файла правил нужно сообщить udev, что он должен загрузить новые правила. Для этого выполните следующую команду:

sudo udevadm control --reload-rules
sudo udevadm trigger

Шаг 5: Тестирование и решение проблем

Теперь, когда вы подключите ваше внешнее устройство, оно должно автоматически монтироваться в /mnt. Если что-то пошло не так, проверьте логи системы с помощью:

dmesg | tail

Это может помочь диагностировать, почему устройство не монтируется автоматически.

Заключение

Создание скрипта для автоматического монтирования устройств — это полезный инструмент, который может значительно упростить работу с USB-накопителями и внешними дисками. Используя udev, вы можете минимизировать вмешательство пользователя и улучшить общий пользовательский опыт. Далее, для оптимизации процессов, рекомендуется периодически проверять и обновлять правила udev, чтобы избежать конфликтов и обеспечить надежную работу с новыми устройствами.

Оцените материал
Добавить комментарий

Капча загружается...