Come `ls` una cartella remota?


10

Questo 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

In qualche modo sono riuscito a farlo;

  1. Navigazione verso la directory remota. ( pcmanfm 0.9.9 )
  2. Apertura della cartella corrente in un terminale.
  3. Eseguire pwdper ottenere/home/myuser/.gvfs/wdtvlivehub on 192.168.5.4
  4. Ha ls /home/myuser/.gvfs/wdtvlivehub on 192.168.5.4funzionato.

.. Quale sarebbe un modo più elegante?


Il montaggio del filesystem remoto è un'opzione?
Beatgammit,

Sì, può essere.
octosquidopus,

Risposte:


5

Il tuo attuale metodo di utilizzo ~/.gvfs/va bene, ma non hai bisogno di pcmanfm per quello - puoi usare gvfs-mount per connetterti alla condivisione. Inoltre, strumenti come gvfs-lse gvfs-cpaccetteranno il tuo smb: // URI.

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

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

Nelle recenti versioni di gvfs la posizione è $XDG_RUNTIME_DIR/gvfs/(aka /run/user/$UID/gvfs/), ei nomi delle sottodirectory sono diventati più leggibili da una macchina:

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

Nelle versioni precedenti:

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

(Ricorda di citare gli spazi nei nomi dei percorsi.)


In particolare per Samba, è possibile utilizzare il smbclientprogramma o montare la condivisione sul livello VFS utilizzando mount -t cifs. (Quest'ultimo è, purtroppo, limitato al root.)

$ smbclient //host/share

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

(Per altri tipi di filesystem, come SFTP e FTP, sshfsed curlftpfsesistono rispettivamente.)


Ho citato pcmanfm perché probabilmente è così che accederò alla cartella prima di eseguirla con lo script. gv-ls sembra essere esattamente quello che stavo cercando, però. Sembra che potrebbe anche sostituire lsle directory locali per motivi di coerenza.
octosquidopus,

Vale la pena chiarire che "gvfs-ls smb: // host / share /" funziona come descritto senza la necessità di montare prima l'unità utilizzando gvfs-mount. In altre parole, non è necessario utilizzare tutti i comandi nel primo blocco di codice per ottenere il risultato desiderato.
John T,

@JohnT: deve essere stata una coincidenza. Di solito ottengo The specified location is not mounted.
user1686

@grawity - Di solito ho già cercato la posizione in Nautilus o simili e autenticato in quel modo, che potrebbe avere qualcosa a che fare con esso.
John T,

@JohnT: Sì, Nautilus utilizza lo stesso GVFS e GTK monta automaticamente le posizioni gvfs a cui stai tentando di accedere. Se la condivisione viene visualizzata nel riquadro laterale di Nautilus, ora è "montata" in questo momento.
user1686

12

È possibile utilizzare il comando smbclient , ad esempio:

smbclient -N //192.168.5.4/wdtvlivehub/abc -c ls

4
Fantastico, ma come posso ottenere lo stesso output del normale ls(nessuna colonna o formattazione, solo un elenco di file)? È importante perché voglio convogliare l'output a un altro comando.
octosquidopus,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.