A câmera montada automaticamente pode ser desmontada automaticamente por script em 14.04

A câmera montada automaticamente pode ser desmontada automaticamente por script em 14.04

A versão do Ubuntu que possuo (14.04.1) monta automaticamente minha câmera digital e gera uma caixa me convidando a dizer o que fazer com ela. Como fiquei insatisfeito com todas as opções apresentadas, escrevi um script que faz exatamente o que eu quero, usando o gphoto2 para acessar a câmera e obter arquivos dela. O único problema é que, mesmo que eu tenha especificado 'não fazer nada' na caixa, a câmera permanece montada e, portanto, no que diz respeito ao gphoto2, indisponível porque não foi liberada. Para liberá-lo, devo abrir ou encontrar uma pasta e, especificamente, ejetar a câmera. Prefiro não me preocupar com esta etapa e apenas deixar meu script ser executado. Eu estou querendo saber se existe uma maneira de fazer isso.

Responder1

Para Ubuntu 17.10, 18.04 e superior, você precisará usar o utilitário gio(que substituiu o gvfs-mount).

Se a câmera estiver montada e você tiver o gphoto2 instalado, tente

gio mount -s gphoto2

mas se você quiser direcionar a câmera especificamente:

gio mount -l

mostrará as unidades montáveis.

Se você tiver uma câmera conectada, ela pode ficar assim:

$ 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

copiar o local após ->permitirá desmontá-lo via gio mount -u(desmontar, se você olhar a ajuda:gio help mount

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

irá desmontar a câmera via shell. Agora, para automatizar isso, você precisará criar um script systemd.

Responder2

Se você não quiser mexer udev(o que é uma coisa do sistema), você pode usar a udiskinterface para desmontar a câmera.

A câmera normalmente será montada em um local fixo, igual /media/user/1234-5678/ou similar (YMMV, depende de como a câmera formata o cartão); e como um dispositivo, digamos /dev/sdc1/.

Agora você pode desmontá-lo do seu script usando

 udisksctl unmount -b /dev/sdc1

o problema é que o dispositivo pode mudar; minha solução é ter essa pequena mágica

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

que funcionará desde que o ID do cartão não mude.

informação relacionada