lftp, stdout, stderr e SAP exec_protocol

Oct 21 2020

Abbiamo script Linux per eseguire SFTP tramite chiavi già condivise, ma recentemente un fornitore richiede la chiave e una password, immagino sia simile all'autenticazione a due fattori. Quindi il fornitore si autentica con la chiave già condivisa e quindi richiede una password. Fino a quando non viene inserita la password, sei solo parzialmente autenticato. Quindi i miei script standard non funzionano. Per aggirare questo lftpproblema , ho scoperto di poter passare la password in uno script e risolve il problema dello scripting inserendo e ottenendo un file. Ecco il mio script:

     #!/bin/sh
     # ###########################
     # Parameters
     # $1 Source Directory # $2 Source File
     # $3 Target IP # $4 Target File
     # $5 Target Directory # $6 Mode (binary or ascii)
     # $7 User # $8 Pwd
     # ###########################
         lftp sftp://$7:$8@$3 -e "cd $5; put $1$2; bye"

Questo script viene chiamato da un programma abap SAP chiamando la funzione SXPG_COMMAND_EXECUTE. Le informazioni di ritorno dagli script di shell vengono solitamente catturate nel parametro return EXEC_PROTOCOL. Tutto funziona bene con tutti gli altri script bash, ma con lftp, non otteniamo nulla da stdout. Riceviamo errori quindi presumo che stia catturando stderr. Qualche idea del perché sia ​​questo?

Risposte

Jagger Oct 22 2020 at 13:35

Non ha a che fare con né SAP né ABAP. Guarda il post qui su ServerFault.com .

Il comando potrebbe eseguire il buffering dell'output, vedere lì la risposta accettata e provare a sbloccarlo.