Назад | Перейти на главную страницу

Автоопределение / монтирование SD-карт и запуск сценария для них в Linux

В настоящее время я использую сервер SME, и мне нужно запустить сценарий при подключении SD-карт к моему серверу. Сам скрипт работает нормально (копирует содержимое карточек), но у меня возникают проблемы с автоматическим монтированием и выполнением скрипта.

У меня есть концентратор USB, состоящий из 10 портов USB; что отображается как:

[root@server ~]# lsusb 

Bus 004 Device 002: ID 0000:0000  
Bus 004 Device 001: ID 0000:0000  
Bus 003 Device 001: ID 0000:0000  
Bus 002 Device 001: ID 0000:0000  
Bus 001 Device 055: ID 1a40:0101 TERMINUS TECHNOLOGY INC.  
Bus 001 Device 051: ID 1a40:0101 TERMINUS TECHNOLOGY INC.  
Bus 001 Device 050: ID 1a40:0101 TERMINUS TECHNOLOGY INC. 
Bus 001 Device 001: ID 0000:0000  

(Хаб - это записи TERMINUS TECHNOLOGY INC)


Поскольку я не могу подключить SD-карты непосредственно к серверу; Я использую USB-адаптер для SD-карты (их 10), подключенный к концентратору, для чтения карт. После подключения 10 насадок (без карт) к хабу; lsusb дает следующее:

[root@server ~]# lsusb 

Bus 004 Device 002: ID 0000:0000  
Bus 004 Device 001: ID 0000:0000  
Bus 003 Device 001: ID 0000:0000    
Bus 002 Device 001: ID 0000:0000    
Bus 001 Device 073: ID 05e3:0723 Genesys Logic, Inc.   
Bus 001 Device 072: ID 05e3:0723 Genesys Logic, Inc.   
Bus 001 Device 071: ID 05e3:0723 Genesys Logic, Inc.   
Bus 001 Device 070: ID 05e3:0723 Genesys Logic, Inc.   
Bus 001 Device 069: ID 05e3:0723 Genesys Logic, Inc.   
Bus 001 Device 068: ID 05e3:0723 Genesys Logic, Inc.   
Bus 001 Device 067: ID 05e3:0723 Genesys Logic, Inc.   
Bus 001 Device 066: ID 05e3:0723 Genesys Logic, Inc.   
Bus 001 Device 065: ID 05e3:0723 Genesys Logic, Inc.   
Bus 001 Device 064: ID 05e3:0723 Genesys Logic, Inc. 
Bus 001 Device 055: ID 1a40:0101 TERMINUS TECHNOLOGY INC.   
Bus 001 Device 051: ID 1a40:0101 TERMINUS TECHNOLOGY INC.   
Bus 001 Device 050: ID 1a40:0101 TERMINUS TECHNOLOGY INC.   
Bus 001 Device 001: ID 0000:0000  

Как видите, читателями являются записи "Gensys Logic, Inc".

Подключение SD-карты к устройству чтения не влияет на lsusb (он читается точно так же, как указано выше), однако моя система распознает карты нормально; как указано dmesg:

Attached scsi generic sg11 at scsi54, channel 0, id 0, lun 0,  type 0  
USB Mass Storage device found at 73  
SCSI device sdd: 31388672 512-byte hdwr sectors (16071 MB)  
sdd: Write Protect is on  
sdd: Mode Sense: 03 00 80 00  
sdd: assuming drive cache: write through  
SCSI device sdd: 31388672 512-byte hdwr sectors (16071 MB)  
sdd: Write Protect is on  
sdd: Mode Sense: 03 00 80 00  
sdd: assuming drive cache: write through  
 sdd: sdd1  
SCSI device sdd: 31388672 512-byte hdwr sectors (16071 MB)  
sdd: Write Protect is on  
sdd: Mode Sense: 03 00 80 00  
sdd: assuming drive cache: write through  
SCSI device sdd: 31388672 512-byte hdwr sectors (16071 MB)  
sdd: Write Protect is on  
sdd: Mode Sense: 03 00 80 00  
sdd: assuming drive cache: write through  
 sdd: sdd1  
SCSI device sdd: 31388672 512-byte hdwr sectors (16071 MB)  
sdd: Write Protect is on  
sdd: Mode Sense: 03 00 80 00  
sdd: assuming drive cache: write through  
SCSI device sdd: 31388672 512-byte hdwr sectors (16071 MB)  
sdd: Write Protect is on  
sdd: Mode Sense: 03 00 80 00  
sdd: assuming drive cache: write through  
 sdd: sdd1  

Если я вручную монтирую sdd1 (mount / dev / sdd1 / somedirectory /), это работает нормально.

Что мне действительно нужно, так это решение, которое автоматически монтирует каждую из карт по мере их ввода в считывающее устройство; и выполняет для них сценарий (при этом их содержимое копируется в другой каталог).

Моя проблема в том, что я не знаю, как это сделать; Я не думаю, что udev будет работать, поскольку USB-устройства не меняются; если бы я мог каким-то образом заставить udev работать с / dev / диск / по пути / однако я думаю, что это выполнимо (кажется, что записи постоянные).

ls / dev / disk возвращает:

pci-0000:00:1d.7-usb-0:4.1.1.1:1.0-scsi-0:0:0:0  
pci-0000:00:1d.7-usb-0:4.1.1.2:1.0-scsi-0:0:0:0  
pci-0000:00:1d.7-usb-0:4.1.1.3:1.0-scsi-0:0:0:0  
pci-0000:00:1d.7-usb-0:4.1.1.4:1.0-scsi-0:0:0:0  
pci-0000:00:1d.7-usb-0:4.1.2:1.0-scsi-0:0:0:0  
pci-0000:00:1d.7-usb-0:4.1.3:1.0-scsi-0:0:0:0  
pci-0000:00:1d.7-usb-0:4.1.4:1.0-scsi-0:0:0:0  
pci-0000:00:1d.7-usb-0:4.2:1.0-scsi-0:0:0:0  
pci-0000:00:1d.7-usb-0:4.3:1.0-scsi-0:0:0:0  
pci-0000:00:1d.7-usb-0:4.4:1.0-scsi-0:0:0:0  
pci-0000:00:1d.7-usb-0:4.4:1.0-scsi-0:0:0:0-part1  
pci-0000:0b:01.0-scsi-0:0:1:0  
pci-0000:0b:01.0-scsi-0:0:1:0-part1  
pci-0000:0b:01.0-scsi-0:0:1:0-part2  

Сверху видно, что в считыватель подключена только одна карта (pci-0000: 00: 1d.7-usb-0: 4.4: 1.0-scsi-0: 0: 0: 0-part1).

Собирается

mount /dev/disk/by-path/pci-0000\:00\:1d.7-usb-0\:4.4\:1.0-scsi-0\:0\:0\:0-part1 

Работает и помещает карту в / media / usbdisk /, однако:

mount /dev/disk/by-path/pci-0000\:00\:1d.7-usb-0\:4.4\:1.0-scsi-0\:0\:0\:0-part1 slot1/

не работает и возвращает «mount: невозможно получить адрес для / dev / disk / by-path / pci-0000»

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

Спасибо

У меня была такая же проблема, и я сидел на ней 3 дня, пытаясь получить @ # $%! SME для установки жесткого диска USB. Я хотел сделать резервную копию внешнего USB, но он отказался правильно смонтировать. Давая мне похожие ошибки, как вы указали Не совсем та же проблема, скажем, с жестким диском, а не с SD-картой, но, тем не менее, схожая.

Если вы выполните команду cat / proc / mdstat, вы увидите жесткие диски, перечисленные в вашей конфигурации RAID, однако она также покажет вам, что есть еще один диск, в настоящее время не смонтированный, как дополнительный диск для добавления в RAID. В моем случае это был sdc, поскольку sda и sdb составляли RAID.

Затем я удалил раздел на SDC с помощью fdisk / dev / sdc, добавил новый основной раздел и сохранил его. mkfs.ext3 -L MyLabel / dev / sdc1 (укажите имя метки) mkdir -p / media / usbdevice

удалил его, подождите несколько секунд и снова подключите. egrep "(kernel | fstab | scsi). * (usb | USB)" / var / log / messages теперь должны показать вам, что он смонтировал USB-накопитель с меткой.

viola fstab-sync сделала свое дело, и все готово.

Вы ищете программу под названием halevt. Имейте в виду, что вам нужно уметь редактировать XML, чтобы заставить его делать то, что вы хотите.

Поскольку в SME Server есть hal и udev, вы можете напишите небольшой скрипт / демон Python (эта ссылка говорит об устройствах USB, но вы можете изменить ее для любого типа хранилища), которая обнаруживает вставки мультимедиа и выполняет операции.