Como extrair um único arquivo de vários arquivos nomeados semelhantes usando o sftp

1

Eu quero puxar um único arquivo de vários arquivos nomeados semelhantes usando sftp.

se meu servidor remoto estiver com arquivos abaixo,

file_0722_005.dat
file_0722_020.dat
file_0722_033.dat
file_0722_0022.dat

Eu só quero puxar qualquer um deles.

No unix eu posso ir para

ls file_0722_*|head -1

Mas na cabeça / cauda do sftp não funciona.

Por favor, sugira como isso pode ser feito!

    
por the_chin 22.07.2016 / 14:34

2 respostas

2

O SSHFS permite montar um sistema de arquivos remoto em sua máquina local. Ele se baseia no SFTP como o protocolo de comunicação, portanto, se o servidor permitir o SFTP, você poderá usar o SSHFS. Sua máquina cliente deve suportar FUSE , que é o caso da maioria das variantes modernas do Unix, incluindo Linux, OSX, * BSD e Solaris .

mkdir myserver
sshfs [email protected]:/path/to/directory myserver
cd myserver
set file_0722_*
cp "$1" /local/directory
fusermount -u myserver
    
por 23.07.2016 / 16:29
1

Você pode conseguir um cliente diferente.

Por exemplo, com lftp ( lftp sftp://user@host/dir ):

glob eval -f 'get "$0"' file_0722_*

No entanto, você não pode usá-lo se os nomes dos arquivos contiverem barras invertidas, aspas duplas ou caracteres de nova linha. Se você não tiver controle sobre os nomes dos arquivos, ele se tornará uma vulnerabilidade de injeção de comando (por exemplo, um arquivo chamado file_0722_";!reboot" fará com que você execute o comando reboot ).

    
por 22.07.2016 / 18:41