远程服务器 Progress Openedge 上的连接和 运行 unix 命令

Connect and run unix commands on remote server Progress Openedge

我需要通过 sftp 和 put[=25= 连接到 远程服务器] 那里有一些文件。以下命令从终端执行我的工作:

sftp -P <port> user@remote_server
cd <target_dir_at_remote_server>
put <my_file_at_local_server>
quit

在这里,第一行建立与远程服务器的连接,下面的命令是 运行。 但是 当我尝试使用 os-command value(<commands>)unix value(<commands>)all 从 Progress 4GL 代码中 运行 这些命令时命令 运行 在本地服务器 而不是远程服务器上。 非常感谢有关代码示例的建议。

我从来没有 运行 专门研究过这个,但我猜 Progress 并没有保持你的命令链的上下文。我建议这两个之一:

使用“|”在单个语句中通过管道传递它们如 'ls -l | more' 或者,如果这不起作用,

创建一个 shell 脚本并将您的文件保存在本地,然后 运行 以您要上传的文件位置和名称作为参数,最后删除本地文件。

从 OS-COMMAND 的角度来看,这些都不是个人 "commands"。 "sftp"是命令,"cd"、"put"、"quit"是sftp的输入。通常,您会使用 "here document",从包含该输入的文件中重定向输入,或者编写脚本作为此类内容的包装器。

使用 scp 而不是 sftp。这将完全避免向实用程序提供输入的需要。就简单多了:

scp my_file user@remote.server:/remotedir