Como `ls` uma pasta remota?

10

Este usa o 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 alguma forma, consegui fazê-lo;

  1. Navegando para o diretório remoto. ( pcmanfm 0.9.9 )
  2. Abrindo a pasta atual em um terminal.
  3. Executando pwdpara obter/home/myuser/.gvfs/wdtvlivehub on 192.168.5.4
  4. Fazendo ls /home/myuser/.gvfs/wdtvlivehub on 192.168.5.4funcionou.

..Qual seria uma maneira mais elegante?

octosquidopus
fonte
A montagem do sistema de arquivos remoto é uma opção?
beatgammit 18/09/11
Sim, pode ser.
octosquidopus 18/09/11

Respostas:

5

Seu método atual de uso ~/.gvfs/é bom, mas você não precisa do pcmanfm para isso - você pode usar gvfs-mount para se conectar ao compartilhamento. Além disso, ferramentas como gvfs-lse gvfs-cpaceitarão seu Umb smb: // .

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

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

Nas versões recentes do gvfs, o local é $XDG_RUNTIME_DIR/gvfs/(aka /run/user/$UID/gvfs/) e os nomes dos subdiretórios se tornaram mais legíveis por máquina:

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

Nas versões mais antigas:

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

(Lembre-se de citar espaços nos nomes dos caminhos.)


Especificamente para o Samba, você pode usar o smbclientprograma ou montar o compartilhamento na camada VFS usando mount -t cifs. (Infelizmente, este último é limitado à raiz.)

$ smbclient //host/share

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

(Para outros tipos de sistemas de arquivos, como SFTP e FTP, sshfse curlftpfsexistem respectivamente.)

user1686
fonte
Eu mencionei o pcmanfm porque é provavelmente como chegarei à pasta antes de executá-la com o script. gv-ls parece ser exatamente o que eu estava procurando. Parece que ele poderia substituir lsos diretórios locais por uma questão de consistência.
octosquidopus 18/09/11
Vale esclarecer que "gvfs-ls smb: // host / share /" funciona como descrito sem a necessidade de montar a unidade usando o gvfs-mount primeiro. Em outras palavras, os comandos no primeiro bloco de código nem todos precisam ser usados ​​para alcançar o resultado desejado.
John T
@ JohnT: Deve ter sido uma coincidência. Eu costumo pegar The specified location is not mounted.
user1686
@rawrawity - normalmente já naveguei para o local no Nautilus ou similar e autenticado dessa maneira, que pode ter algo a ver com isso.
John T
@ JohnT: Sim, o Nautilus usa o mesmo GVFS, e o GTK monta automaticamente os locais gvfs que você está tentando acessar. Se o compartilhamento aparecer no painel lateral do Nautilus, ele estará 'montado' agora.
user1686
12

Você pode usar o comando smbclient , por exemplo:

smbclient -N //192.168.5.4/wdtvlivehub/abc -c ls
rumpel
fonte
4
Ótimo, mas como posso obter o mesmo resultado que o normal ls(sem colunas nem formatação, apenas uma lista de arquivos)? É importante porque eu quero canalizar a saída para outro comando.
octosquidopus 18/09/11