¿La cámara montada automáticamente se puede desmontar automáticamente mediante script en 14.04?

¿La cámara montada automáticamente se puede desmontar automáticamente mediante script en 14.04?

La versión de Ubuntu que tengo (14.04.1) monta automáticamente mi cámara digital y genera un cuadro invitándome a decir qué hacer con ella. Como no estaba satisfecho con todas las opciones presentadas, escribí un script que hace exactamente lo que quiero, usando gphoto2 para acceder a la cámara y obtener archivos de ella. El único problema es que, incluso si he especificado "no hacer nada" en la caja, la cámara permanece montada y, por lo tanto, en lo que respecta a gphoto2, no está disponible porque no se ha lanzado. Para poder liberarlo debo abrir o buscar una carpeta display, y específicamente expulsar la cámara. Preferiría no molestarme con este paso y simplemente dejar que se ejecute mi script. Me pregunto si hay una manera de hacer esto.

Respuesta1

Para Ubuntu 17.10, 18.04 y versiones posteriores, necesitarás usar la utilidad gio(que reemplazó a gvfs-mount).

Si la cámara está montada y tienes gphoto2 instalado, prueba

gio mount -s gphoto2

pero si quieres apuntar específicamente a la cámara:

gio mount -l

le mostrará las unidades montables.

Si tiene una cámara conectada, podría verse así:

$ 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 la ubicación después de ->le permitirá desmontarlo mediante gio mount -u(desmontar, si consulta la ayuda:gio help mount

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

Desmontará la cámara a través del shell. Ahora, para automatizar esto, necesitarás crear un script systemd.

Respuesta2

Si no quieres jugar udev(que es una cuestión del sistema), puedes usar la udiskinterfaz para desmontar la cámara.

La cámara normalmente se montará en un lugar fijo, similar /media/user/1234-5678/o similar (YMMV, depende de cómo la cámara formatee la tarjeta); y como dispositivo, digamos /dev/sdc1/.

Ahora, puedes desmontarlo de tu script usando

 udisksctl unmount -b /dev/sdc1

el problema es que el dispositivo puede cambiar; mi solución es tener esta pequeña magia

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

que funcionará siempre que la identificación de la tarjeta no cambie.

información relacionada