¿Hay alguna manera de hacer un "ls" remoto como "scp" hace una copia remota?

55

¿Hay alguna manera de hacer un "ls" remoto como "scp" hace una copia remota en un shell estándar de Linux?

Zubair
fuente
Puedo ver que sería bueno hacer esto, pero ¿por qué no solo SSH y hacer un ls?
SpacemanSpiff
@SpacemanSpiff: para que pueda escribirlo. Así es como llegué a esta página.
wobbily_col

Respuestas:

76

Siempre puedes hacer esto:

ssh user@host ls -l /some/directory

Eso enviará SSH al host, ejecutará ls, volcará la salida y se desconectará inmediatamente.

Corey S.
fuente
2
... si tienes acceso real de shell. Algunos sistemas tienen un shell especial que solo aceptará ciertas llamadas scpy rsync, quizás sftptambién, y eso es todo.
glglgl
¿cómo alias esto para decir, "rls"?
Walrus the Cat
2
@WalrustheCat alias rls="ssh user@host ls -l"Reinicie su shell y rls /some/directorydebería funcionar.
chishaku
El único problema con esto es que el archivo no encontrado devuelve un código de error, cuando mi razón para hacerlo es precisamente por qué quiero llamar a ls.
Steve Cohen
No sigo a @SteveCohen. ¿Quieres el código de error del ls remoto? Si es así, $? lo contiene justo después de ejecutar el comando. (por ejemplo, devuelve 2 si ejecuto esto [local o remotamente] en un archivo que no se encuentra)
Corey S.
11

Para enumerar todos los archivos en un directorio:

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

Para algo como encontrar directorio / ruta -ls

rsync -r host.name.com:directory/path
Black Rock Onyx
fuente
Si rsync no está instalado en el host, entonces obtienes algo como bash: rsync: command not found. ¿Supongo que esto implica que está usando SSH en segundo plano?
mwfearnley
Tenga en cuenta que el formato es similar a ls -l. En mi sistema, no parece que haya una opción para simplemente enumerar los archivos.
Jonathan
6

Para todos los que vienen a través de Google a esta pregunta porque están buscando una manera de enumerar archivos remotos pero no pueden acceder al servidor remoto a través de ssh (caso común para servidores de respaldo), podría usar 'sftp'.

Ejemplo:

sftp [email protected]
ls
cd somedir
exit

Inicie una sesión interactiva en un directorio remoto específico:

sftp [user@]host[:dir]
tobltobs
fuente
3

Si. SSH y hacer un ls:

ssh host ls /path

Podría fácilmente escribir esto para que sea más flexible, o usar el host: la sintaxis de ruta scputiliza.

Andrew M.
fuente
1

Creo que mi uso más frecuente de esto es obtener el resultado ls, una lista simple de archivos sin todos los permisos y fechas y demás, y guardarlo en un archivo local.

{ ssh [email protected] "cd /dir/of/interest; ls -1f *.txt;" } > /home/me/listoffiles.txt

Puedes ejecutar lo que quieras dentro de las comillas. Toda la salida termina en su archivo de texto local. O si desea ejecutar un gran script desagradable en el servidor y capturar toda su salida, incluso errores:

{ ssh [email protected] <script.remote.sh } > /home/me/output.log 2>/home/me/output.err
mightypile
fuente
1
En la segunda línea de código, { }no se necesitan.
glglgl