Можно ли автоматически отключать автоматически установленную камеру с помощью скрипта в версии 14.04?

Можно ли автоматически отключать автоматически установленную камеру с помощью скрипта в версии 14.04?

Версия Ubuntu, которая у меня есть (14.04.1), автоматически монтирует мою цифровую камеру и создает окно, предлагающее мне сказать, что с ней делать. Поскольку я был недоволен всеми представленными вариантами, я написал скрипт, который делает именно то, что мне нужно, используя gphoto2 для доступа к камере и получения файлов с нее. Единственная проблема заключается в том, что даже если я указал окну «ничего не делать», камера остается монтированной и, таким образом, с точки зрения gphoto2, недоступной, поскольку не освобождена. Чтобы освободить ее, я должен открыть или найти папку display и специально извлечь камеру. Я бы предпочел не заморачиваться с этим шагом и просто позволить моему скрипту работать. Мне интересно, есть ли способ сделать это.

решение1

Для Ubuntu 17.10, 18.04 и выше вам потребуется использовать утилиту gio(которая заменила gvfs-mount).

Если камера установлена ​​и у вас установлен gphoto2, попробуйте

gio mount -s gphoto2

но если вы хотите нацелить камеру конкретно:

gio mount -l

покажет вам монтируемые диски.

Если у вас подключена камера, это может выглядеть так:

$ gio mount -l
Drive(0): DA4032
  Type: GProxyDrive (GProxyVolumeMonitorUDisks2)
Volume(0): Canon Digital Camera
  Type: GProxyVolume (GProxyVolumeMonitorGPhoto2)
  Mount(0): Canon Digital Camera -> gphoto2://%5Busb%3A002,002%5D/
    Type: GProxyShadowMount (GProxyVolumeMonitorGPhoto2)
Mount(1): Canon Digital Camera -> gphoto2://%5Busb%3A002,002%5D/
  Type: GDaemonMount

копирование местоположения после ->позволит вам размонтировать его через gio mount -u(размонтировать, если вы посмотрите справку:gio help mount

gio mount -u gphoto2://%5Busb%3A002,002%5D/

отмонтирует камеру через оболочку. Теперь, чтобы автоматизировать это, вам нужно создать скрипт systemd.

решение2

Если вы не хотите возиться с настройками udev(это системная вещь), вы можете использовать udiskинтерфейс для отключения камеры.

Камера обычно устанавливается в фиксированном месте, например, /media/user/1234-5678/наподобие (YMMV, в зависимости от того, как камера форматирует карту); и в качестве устройства, например /dev/sdc1/, .

Теперь вы можете отключить его от своего скрипта, используя

 udisksctl unmount -b /dev/sdc1

проблема в том, что устройство может измениться; мое решение — это иметь это маленькое волшебство

 udisksctl unmount -b $(mount | grep 1234-5678  | cut -d" "  -f1)

что будет работать при условии, что идентификатор карты не изменится.

Связанный контент