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?

Zubair
fonte
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.

Corey S.
fonte
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
Black Rock Onyx
fonte
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 [email protected]
ls
cd somedir
exit

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

sftp [user@]host[:dir]
tobltobs
fonte
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.

Andrew M.
fonte
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 [email protected] "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 [email protected] <script.remote.sh } > /home/me/output.log 2>/home/me/output.err
mightypile
fonte
11
Na segunda linha de código, o { }não é necessário.
glglgl