Criação e Configuração de Scripts Winscp para Transferir Arquivos do Sistema de Arquivos para SFTP
Este guia mostrará como criar e configurar scripts WINSCP para transferir arquivos de um Sistema de Arquivos para SFTP. O tempo esperado para esta configuração deve levar cerca de 10-15 minutos. Para o contexto, esta abordagem está sendo usada para um cliente gerando arquivos .xlsx de App Builder que uma empresa terceirizada usa para determinar o acesso dos funcionários aos relatórios no sistema do cliente. Então, essas informações são geradas a partir de App Builder primeiro, e depois transferido para o servidor de terceiros seguindo o processo descrito neste guia.
Como Configurar
- Crie um diretório novo diretório no seu Servidor Web e adicione dois arquivos a ele —
winscp.log
e{{algumNome}} export.txt
-
No
{{AlgumNome}} export.txt
arquivo, adicione o seguinte código para estar em linha com sua configuração:open sftp://{{nomedeusuário}}:{{senha}}@{{nomedohost}} -hostkey="ssh-rsa 2048 {{chave do host}}" cd /path/to/directory/on/sftp put -nopermissions -nopreservetime -delete C:\{{CaminhoLocalParaArquivo}}\* exit
No exemplo do bloco de código, onde se lê
sftp://{{nomedeusuário}}:{{senha}}@{{nomedohost}}
,{{nomedeusuário}}
,{{senha}}
, e{{nomedohost}}
deve ser substituído pelas credenciais de login e nome do host do SFTP, e o-hostkey
refere-se à impressão digital da chave do host do servidor que pode ser encontrada em WinSCP > Session > Server and protocol information > Server hospedar key fingerprint. Veja a captura de tela:cd /path/to/directory/on/sftp
refere-se ao diretório raiz na pasta SFTP de destino para onde os arquivos devem ser movidos.put -nopermissions -nopreservetime -delete C:\{{CaminhoLocalParaArquivo}}\*
refere-se à localização do arquivo no servidor de origem ({{nm.ab}} servidor) que o arquivo existe, enquanto o * é um curinga que informa ao script para pegar todos os arquivos dentro desse diretório.Deve-se notar também que o
-delete
no script irá deletar seu arquivo assim que ele for movido (ou tentar movê-lo). Este sinalizador pode ser removido se você quiser manter o arquivo em seu diretório de origem. -
Abra o Windows Task Scheduler no servidor web e crie uma nova tarefa de acordo com suas especificações. Nesta configuração específica, o agendamento é configurado para ser executado a cada 5 minutos, o que é realizado com a opção 'Repetir tarefa a cada 5 minutos por uma duração de 1 dia', em um agendamento diário:
-
Clique duas vezes na tarefa que você acabou de criar na etapa 3. Na aba Ações, crie uma ação Iniciar um programa:
- Em Programa/ Script selecione o local do WinSCP.exe
- Em Adicionar argumentos (opcional) coloque a seguinte string
/console /script="{{algumNome}} export.txt" /log="winscp.log"
onde{{algumNome}} export.txt
é o nome do seu arquivo criado na etapa 1 ewinscp.log
seu arquivo winscp.log também foi criado na etapa 1. - Em Iniciar em (opcional) adicione o "novo diretório" que você criou na etapa 1
Sua tarefa agora deve ser configurada para mover arquivos do diretório especificado para o SFTP! Você pode executar sua tarefa sob demanda do Windows Task Scheduler e verificar o arquivo winscp.log se houver algum erro.
O WinSCP tem uma documentação muito útil se você deseja estender o script ou fazer algo semelhante com o WinSCP: https://winscp.net/eng/docs/scripting