使用 Progress 4gl 代码获取 ftp 文件的最简单方法是什么?

What is the simplest way to ftp files using Progress 4gl code?

这是在 linux 上进行的。请不要 windows 代码。 进步崔 (11.6).

我有一个在 linux 上创建 csv 文件的过程。

一个单独的进程(程序)将获取这些 CSV 文件并将它们 ftp 到给定站点。

Progress 4GL (Openedge) 中的 ftp 命令是什么?

最简单的解决方案是使用 os-command 和 curl。

类似于:

os-command value( substitute( 'curl -p --insecure  "ftp://&3:&1" --user "&4:&5" -T "&2" --ftp-create-dirs', localName, remoteName, serverName, usrName, usrPass ))).

FWIW 你(或你发送文件的一方)真的不应该还在使用 FTP。这是非常不安全的。 SCP/SFTP 会是一个非常非常好的选择。

我设法为 sftp 编写了代码。我还尝试了 Tom 提供的代码 ftp。

这是代码,如果有人感兴趣(用信息代替 serverName、remoteFile、usrName、usrPass)

/******************/
/* Ftpbob         */
/* ftp command    */
/* Author: 4gl    */
/******************/
/* upload using sftp (1)
curl  -k "sftp://83.46.38.23:22/CurlPutTest/" --user "testuser:testpassword" -T "C:\test\testfile.xml" --ftp-create-dirs
*/
/* upload using ftp (2)
os-command value(substitute('curl -p --insecure  "ftp://&1:&2" --user "&3:&4" -T "&5" --ftp-create-dirs', serverName, remoteFile, usrName, usrPass, localFile )).
*/

        Def var lvCommand  as char no-undo.
        Def var serverName as char no-undo initial "serv1". /* 92.25.04.69 */
        Def var usrName    as char no-undo initial "bob".
        Def var usrPass    as char no-undo initial "sumpass1".
        Def var remoteFile as char no-undo initial "/remoteDir/abc.csv".
        Def var localFile  as char no-undo initial "/localDir/123.csv".

        update
          serverName format "x(25)"
          usrName    format "x(25)"
          usrPass    format "x(25)"
          remoteFile format "x(25)"
          localFile  format "x(25)"
        with 1 col side-labels.

        /************************* FTP ***********************
        lvCommand = substitute
        ('curl -p --insecure "ftp://&1:&2" --user "&3:&4" -T "&5" --ftp-create-dirs',
              trim(serverName), 
              trim(remoteFile), 
              trim(usrName), 
              trim(usrPass),
              trim(localFile)
            ). 
        ******************************************************/

        /*** SFTP ***/
        lvCommand = substitute
        ('curl -k "sftp://&1:&2" --user "&3:&4" -T "&5" --ftp-create-dirs',
              trim(serverName), 
              trim(remoteFile), 
              trim(usrName), 
              trim(usrPass),
              trim(localFile)
            ). 

        message lvCommand
        view-as alert-box.

        os-command value(lvCommand).