upload para o modo de lote sftp

0

Eu preciso enviar arquivos para um servidor SFTP como parte de um processo de pipeline automatizado (portanto, não pode ser interativo). Eu não tenho acesso ssh então eu não posso usar scp ou rsync.

Eu tive algum sucesso usando a solução proposta nesta resposta :

sftp user@server <<EOF
put localPath remotePath
EOF

No entanto, estou procurando algo um pouco mais sólido, pois não terei indicação se isso falhar. Por exemplo, se eu quiser fazer o download de um servidor SFTP, posso usar a seguinte sintaxe:

sftp user@server:remotePath localPath

Existe um one-liner equivalente para o upload?

    
por Inbar Rose 02.05.2018 / 10:38

1 resposta

1

Você pode usar o "modo em lote" do sftp. Do manual:

> -b batchfile
>              Batch mode reads a series of commands from an input batchfile instead of stdin.  Since it lacks user interaction it
>              should be used in conjunction with non-interactive authentication.  A batchfile of ‘-’ may be used to indicate
>              standard input.  sftp will abort if any of the following commands fail: get, put, reget, reput, rename, ln, rm,
>              mkdir, chdir, ls, lchdir, chmod, chown, chgrp, lpwd, df, symlink, and lmkdir.  Termination on error can be sup‐
>              pressed on a command by command basis by prefixing the command with a ‘-’ character (for example, -rm /tmp/blah*).

O que significa que você cria um arquivo temporário com os comandos e executa os comandos no arquivo com "sftp -b tempfile user @ server"

Existem outras ferramentas para essas coisas, por exemplo lftp

    
por 02.05.2018 / 11:29

Tags