O objetivo deste blog é fornecer uma maneira simples de configurar uma conexão SFTP entre um sistema SAP e um servidor SFTP.
O principal problema que enfrentamos ao usar o padrão SAP é descrito na nota:
795131 - FAQ: SAPFTP não pode realizar comunicação segura por FTP
.
Este tema também foi abordado por muitos blogs. Embora esses diversos blogs sejam bons, o proposto aqui é uma maneira de fazê-lo sem nenhuma restrição. Os excelentes blogs:
https://blogs.sap.com/2013/10/03/write-file-on-sftp-server-from-sap/
já descrevem a solução deste blog atual, apenas não fornecem uma solução passo a passo.
Problema principal
Como mencionado, o SAP não cobre SFTP usando o SAPFTP. De acordo com a nota 795131, a melhor solução é usar um software de terceiros para fazer isso e então chamar o software de terceiros a partir do SAP (usando o comando host SM49/69). No entanto, se o sistema SAP estiver sendo executado em um sistema baseado em Unix, tudo está bem, porque a sintaxe oferecida pelo Unix permite que você execute o comando SFTP em uma linha (usando | eventualmente), mas se o sistema SAP estiver sendo executado em um sistema baseado no Windows NT, surgem problemas.
O comando SFTP nativo não pode ser usado como OneLiner. O impacto disso é que você precisa encontrar uma maneira de construir um script capaz de se conectar ao SFTP e então realizar ações dentro do aplicativo nativo de SFTP.
Solução proposta
Conforme descrito nos blogs citados anteriormente, uma solução seria usar o aplicativo Winscp de uso gratuito. O Winscp permite que você se conecte e execute ações em um SFTP remoto em uma única linha de comando.
Requisitos prévios
-
Winscp deve estar instalado no servidor,
Exemplo passo a passo
-
-
Criação do comando do sistema (SM69)
Pressupondo que o Winscp está instalado de forma "clássica", aqui está o comando que permitirá ao sistema invocar o Winscp:
"C:\Program Files (x86)\WinSCP\WinSCP.exe" /command
SM69 para a criação do Comando do Sistema (Captura de tela do meu próprio sistema)
-
-
Construção de um comando simples "Put"
Conforme descrito anteriormente, o objetivo é ter um OneLiner. Nos pede para colocar todos os argumentos ao mesmo tempo e na ordem correta. Abaixo, um exemplo de comando, detalharemos mais adiante:
"C:\Program Files (x86)\WinSCP\WinSCP.exe" /command "open sftp://<user>:<password>@<host>:<remote_folder>" "put C:\Users\sapabap\testfile.txt testfile.txt" "exit"
A primeira parte já é conhecida e será considerada por nosso SM69.
Depois disso, vem o "open":
"open sftp://<user>:<password>@<host>:<remote_folder>"
Fala por si só, mas para funcionar: <user> deve ser um usuário com direitos de acesso no <host>, a senha pode ser fornecida aqui. Como a comunicação é feita via SSH, a consideraremos segura.
A pasta remota é a