¿Cómo `ls` una carpeta remota?

10

Este usa Samba:

 $ ls smb://192.168.5.4/wdtvlivehub/abc
 ls: cannot access smb://192.168.5.4/wdtvlivehub/abc: No such file or directory

De alguna manera logré hacerlo;

  1. Navegando hacia el directorio remoto. ( pcmanfm 0.9.9 )
  2. Abrir la carpeta actual en una terminal.
  3. Ejecutando pwdpara obtener/home/myuser/.gvfs/wdtvlivehub on 192.168.5.4
  4. Haciendo ls /home/myuser/.gvfs/wdtvlivehub on 192.168.5.4trabajado.

¿Cuál sería una forma más elegante?

octosquidopus
fuente
¿Montar el sistema de archivos remoto es una opción?
beatgammit
Sí, puede ser.
octosquidopus

Respuestas:

5

Su método actual de uso ~/.gvfs/está bien, pero no necesita pcmanfm para eso; puede usarlo gvfs-mount para conectarse al recurso compartido. Además, herramientas como gvfs-lsy gvfs-cpaceptarán su smb: // URI.

$ gvfs-mount smb://HOST/SHARE/

$ gvfs-ls smb://HOST/SHARE/

En versiones recientes de gvfs, la ubicación es $XDG_RUNTIME_DIR/gvfs/(aka /run/user/$UID/gvfs/), y los nombres de subdirectorios se han vuelto más legibles por máquina:

$ ls /run/user/$UID/gvfs/smb-share:server=HOST,share=SHARE/

En versiones anteriores:

$ ls ~/.gvfs/"SHARE on HOST"/

(Recuerde citar espacios dentro de los nombres de ruta).


Específicamente para Samba, puede usar el smbclientprograma o montar el recurso compartido en la capa VFS mediante mount -t cifs. (Este último, desafortunadamente, se limita a la raíz).

$ smbclient //host/share

# mount -t cifs //host/share /mnt

(Para otros tipos de sistemas de archivos, como SFTP y FTP, sshfsy curlftpfsexisten respectivamente).

usuario1686
fuente
Mencioné pcmanfm porque probablemente sea así como llegaré a la carpeta antes de ejecutarla con el script. Sin embargo, gv-ls parece ser exactamente lo que estaba buscando. Parece que incluso podría reemplazar lsa los directorios locales en aras de la coherencia.
octosquidopus
Vale la pena aclarar que "gvfs-ls smb: // host / share /" funciona como se describe sin la necesidad de montar la unidad usando gvfs-mount primero. En otras palabras, los comandos en el primer bloque de código no necesitan ser utilizados para lograr el resultado deseado.
John T
@JohnT: Debe haber sido una coincidencia. Por lo general me sale The specified location is not mounted.
user1686
@grawity: por lo general, ya he navegado hasta la ubicación en Nautilus o similar y me he autenticado de esa manera, eso podría tener algo que ver con eso.
John T
@JohnT: Sí, Nautilus usa el mismo GVFS y GTK monta automáticamente las ubicaciones de gvfs a las que está intentando acceder. Si el recurso compartido aparece en el panel lateral de Nautilus, entonces está 'montado' en este momento.
user1686
12

Puede usar el comando smbclient , por ejemplo:

smbclient -N //192.168.5.4/wdtvlivehub/abc -c ls
rumpel
fuente
44
Genial, pero ¿cómo puedo lograr el mismo resultado que con regular ls(sin columnas ni formato, solo una lista de archivos)? Es importante porque quiero canalizar la salida a otro comando.
octosquidopus