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 udisk
interfaz 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.