Encontre e baixe arquivo (s) usando o PuTTY

1

Estou tentando usar o PuTTY para conectar via SSH a um Mac e baixar alguns arquivos especificados usando um comando find. Os arquivos têm espaços neles que podem estar causando problemas e não sei como especificar um caminho local do Windows.

Estou tentando algo assim, sem sucesso até agora:

find . -iname "*searchtext*" | xargs -0 scp user@host:{} localpath

Alguma idéia?

Se não for possível usar uma linha, não me importo com um script Bash que possa ser chamado via PuTTY?

    
por Vivek Ayer 07.04.2011 / 16:11

2 respostas

3

Você está melhor apenas criando um zip ou tgz dos arquivos no servidor remoto

zip found-files.zip $(find . -iname "*searchtext*")

E depois use o winscp para baixar o arquivo found-files.zip. Winscp irá autenticar o mesmo que putty (senhas ou usa pagent se estiver em execução). Se você preferir o prompt de comando dos, você pode usar o pscp

    
por 07.04.2011 / 17:31
1

I'm trying to use PuTTY to connect via SSH to a Mac and download some files specified using a find command.

Você está tentando baixar os arquivos para o sistema Windows local?

Lembre-se de que o PuTTY é um cliente SSH. Tudo o que faz é enviar texto digitado para o seu Mac e exibir a saída recebida. Portanto, quando você executa scp desta forma, ele é executado no Mac e os nomes dos arquivos devem ser especificados conforme vistos pelo Mac.

Se você deseja transferir arquivos do Mac para o Windows, é scp macpath user@windowshost:windowspath . (Você parece ter isso invertido em seu comando de exemplo.)

Isso também significa que seu computador Windows precisa de um servidor SSH instalado com recursos SCP e que deve permitir conexões SSH de entrada.

I'm not sure how to specify a local Windows path.

Depende do servidor SSH que você instalou no Windows. (Veja o parágrafo acima.) Mas geralmente, x:\dir\file pode ser convertido em /x/dir/file . Leia o manual.

The files have spaces in them that may be causing issues

Sim, isso causa um problema com xargs . Você foi na direção certa com xargs -0 , mas precisa fazer o mesmo com find - find .... -print0 ou find .... -printf "%pfind" .

Se a versão de -print0 no Mac OS X não suportar -printf nem find , você poderá usar novas linhas como separadores. Nesse caso, não adicione nenhuma opção especial a xargs -0 , mas altere xargs -d '\n' para xargs .

Uma alternativa melhor para find -exec é xargs .

xargs -0 scp user@host:{} localpath

Há mais um erro aqui. Por padrão, {} não não substitui -I "{}" pelo nome do arquivo; você tem que dizer especificamente para isso, usando -exec .

Você pode ter confundido isso com a opção find em scp , o que faz funcionar assim:

find . -iname "*searchtext*" -exec scp user@host:{} localpath \;

Acima, deixei a ordem do argumento %code% exatamente como no exemplo original. Mas como eu disse antes, está incorreto.

    
por 07.04.2011 / 16:36