C'è un modo per fare un "ls" remoto molto simile a "scp" fa una copia remota?


55

C'è un modo per fare una "ls" remota come "scp" fa una copia remota in una shell linux standard?


Vedo che sarebbe bello farlo, ma perché non solo SSH e fare un ls?
SpacemanSpiff

@SpacemanSpiff - Quindi puoi scriverlo. È così che sono arrivato a questa pagina.
wobbily_col,

Risposte:


76

Puoi sempre farlo:

ssh user@host ls -l /some/directory

Ciò consentirà a SSH di eseguire l'host, eseguire ls, scaricare nuovamente l'output e disconnettersi immediatamente.


2
... se hai un vero accesso alla shell. Alcuni sistemi hanno una shell speciale che accetta solo alcuni scpe rsyncchiama, forse sftpanche, e basta.
glglgl,

come diresti questo ad esempio "rls"?
Walrus the Cat,

2
@WalrustheCat alias rls="ssh user@host ls -l"Riavvia la shell e rls /some/directorydovrebbe funzionare.
Chishaku,

L'unico problema con questo è che il file non trovato restituisce un codice di errore, quando il motivo per cui lo faccio è proprio il motivo per cui voglio chiamare ls.
Steve Cohen,

Non seguendo @SteveCohen. Vuoi il codice di errore da ls remoto? In tal caso, $? lo contiene subito dopo aver eseguito il comando. (ad es. restituisce 2 se eseguo questo [localmente o da remoto] su un file che non viene trovato)
Corey S.

11

Per elencare tutti i file in una directory:

rsync host.name.com:directory/path/'*'

Per qualcosa come trovare directory / path -ls

rsync -r host.name.com:directory/path

Se rsync non è installato sull'host, otterrai qualcosa di simile bash: rsync: command not found. Immagino che questo implichi che sta usando SSH in background?
mwfearnley,

Si noti che il formato è simile a ls -l. Sul mio sistema, non sembra che ci sia un'opzione per elencare solo i file.
Jonathan,

6

Per tutti coloro che arrivano tramite Google a questa domanda perché stanno cercando un modo per elencare i file remoti ma non possono accedere al server remoto tramite ssh (caso comune per i server di backup), è possibile utilizzare 'sftp'.

Esempio:

sftp username@hostname.xyz
ls
cd somedir
exit

Avvia una sessione interattiva in una directory remota specifica:

sftp [user@]host[:dir]

3

Sì. SSH e fare un ls:

ssh host ls /path

Puoi facilmente scrivere questo script per renderlo più flessibile o usare l'host: scpusa la sintassi del percorso .


1

Trovo che il mio uso più frequente di questo sia quello di ottenere il risultato ls, un semplice elenco di file senza tutte le autorizzazioni e le date e così, e tenerlo in un file locale.

{ ssh me@host.com "cd /dir/of/interest; ls -1f *.txt;" } > /home/me/listoffiles.txt

Puoi eseguire tutto ciò che vuoi tra virgolette. Tutto l'output finisce nel tuo file di testo locale. O se vuoi eseguire un grosso brutto script sul server e catturare tutto il suo output, anche gli errori:

{ ssh me@host.com <script.remote.sh } > /home/me/output.log 2>/home/me/output.err

1
Nella seconda riga di codice, { }non sono necessari.
glglgl,
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.