Existe uma maneira de fazer um "ls" remoto como o "scp" faz uma cópia remota?


55

Existe uma maneira de fazer um "ls" remoto como o "scp" faz uma cópia remota em um shell linux padrão?


Eu posso ver que seria bom fazer isso, mas por que não apenas SSH e fazer um ls?
precisa

@ SpacemanSpiff - Então você pode criar um script. Foi assim que cheguei a esta página.
precisa saber é o seguinte

Respostas:


76

Você sempre pode fazer isso:

ssh user@host ls -l /some/directory

Isso fará o SSH para o host, executará ls, enviará a saída de volta para você e será desconectada imediatamente.


2
... se você tiver acesso real ao shell. Alguns sistemas têm um shell especial que aceita apenas chamadas scpe certas rsync, talvez sftptambém, e é isso.
glglgl

como você alias isso para, digamos, "rls"?
Morsa, o gato

2
@WalrustheCat alias rls="ssh user@host ls -l"Reinicie seu shell e rls /some/directorydeve funcionar.
Chishaku #

O único problema com isso é que o arquivo não encontrado retorna um código de erro, quando minha razão para fazer isso é precisamente o motivo pelo qual desejo chamar ls.
Steve Cohen

Não segue @SteveCohen. Você está querendo o código de erro do sl remoto? Se sim, $? contém logo após a execução do comando. (por exemplo, retorna 2 se eu executar isso [local ou remotamente] em um arquivo que não foi encontrado) #
Corey S.

11

Para listar todos os arquivos em um diretório:

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

Para algo como find directory / path -ls

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

Se o rsync não estiver instalado no host, você terá algo parecido bash: rsync: command not found. Eu acho que isso implica que ele está usando SSH em segundo plano?
Mkfearnley

Observe que o formato é semelhante a ls -l. No meu sistema, não parece haver uma opção para listar apenas os arquivos.
317 Jonathan

6

Para todos que chegam pelo google a esta pergunta, porque estão procurando uma maneira de listar arquivos remotos, mas não podem acessar o servidor remoto via ssh (caso comum de servidores de backup), você pode usar o 'sftp'.

Exemplo:

sftp username@hostname.xyz
ls
cd somedir
exit

Inicie uma sessão interativa em um diretório remoto específico:

sftp [user@]host[:dir]

3

Sim. SSH e faça um ls:

ssh host ls /path

Você pode facilmente criar um script para ser mais flexível ou usar a sintaxe host: path scp.


1

Acho que meu uso mais frequente disso é obter o resultado ls, uma lista simples de arquivos sem todas as permissões e datas, e mantê-lo em um arquivo local.

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

Você pode executar o que quiser dentro das aspas. Toda a saída termina no seu arquivo de texto local. Ou se você deseja executar um grande script desagradável no servidor e capturar toda a sua saída, até erros:

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

11
Na segunda linha de código, o { }não é necessário.
glglgl
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.