Cómo acceder a recursos compartidos desde un dispositivo Android con KDEConnect usando la línea de comando

Cómo acceder a recursos compartidos desde un dispositivo Android con KDEConnect usando la línea de comando

Cuando los dispositivos se emparejaron computadora <-> teléfono usando KDEConnect, ¿es posible acceder a la tarjeta SD y al almacenamiento interno del teléfono directamente desde la línea de comando?

Caso de uso:

Cuando se emparejaron los dispositivos, quiero copiar automáticamente archivos desde el teléfono (memoria interna, tarjeta SD externa) con un script. Pasos:

  1. Configurar dispositivos como emparejados
  2. Ejecutar guión

Con kdeconnect-clipuedo obtener la ID del dispositivo así:

$ kdeconnect-cli --id-only -a 
166ec0250e88ff2b

Pero no puedo acceder a él aquí:

$ ls /run/user/1000/166ec0250e88ff2b/
ls: cannot access '/run/user/1000/166ec0250e88ff2b/': Permission denied

Permisos:

[root@host]# ls  -la /run/user/1000/
ls: cannot access '/run/user/1000/166ec0250e88ff2b': Permission denied
...
drwx------ 9 user user 380 Nov 17 11:57 .
drwxr-xr-x 3 user user 60 Nov 17 08:07 ..
d????????? ? ?         ?           ?            ? 166ec0250e88ff2b

¿Cómo accedo al sistema de archivos de almacenamiento interno y externo del teléfono?

$ ls -la /run/user/1000/166ec0250e88ff2b/storage
total 0
dr-x------ 1 user user 0 Jan  1  1970 0000-0000/
d--x------ 1 user user 0 Feb  6  1970 emulated/
d--x------ 1 user user 0 Sep  2 20:10 self/

$ ls -la /run/user/1000/166ec0250e88ff2b/storage/0000-0000/
ls: reading directory '/run/user/1000/166ec0250e88ff2b/storage/0000-0000/': Operation not permitted
total 0

Respuesta1

mconectares una implementación del protocolo KDE Connect en Vala/C disponible a través degithub.com. No necesita bibliotecas KDE y viene con un cliente que le permite compartir archivos fácilmente desde la línea de comandos, por ejemplo

 mconnectctl share-file /org/mconnect/device/0 /path/to/file

Consulte la página de github vinculada para obtener más información.

Debería poder utilizarlo mconnectctlpara probar si un dispositivo específico está emparejado, por ejemplo, para un teléfono llamado Motorola Moto G Maciekconectado a /org/mconnect/device/0:

mconnectctl show-device /org/mconnect/device/0 | awk '/Motorola Moto G Maciek/{f=1}/Paired/{{if(f){g=1}}}f&&g{print $2;exit}'

Esto volverá truesi está emparejado y se puede usar en un script.

información relacionada