是否可以通过 FTP 提示运行程序?

是否可以通过 FTP 提示运行程序?

我对 Unix 或 shell 脚本还比较陌生(说实话,完全是新手),情况是这样的:我有在远程 UNIX 服务器上运行的 BI 软件。通过 Windows 上的 SAS 客户端,我运行一些分析并创建一些需要自动推送到该 UNIX 服务器的平面文件,通过 SAS X 命令在 rsubmit 上执行 Unix 命令没有问题,我通过 FTP 提示上传文件,但是我想在登录 ftp 服务器后使用“sh”命令

ftp -nv << -EOF > /AutomatedReports/Flatfiles/log/sendInv.log
open biserver.myserver.com
user biuser pass1234
prompt
lcd  /container/AutomatedReports/KPI_Flatfiles/
cd  /container/AutomatedReports/apps/flatfiles
put kpi_new_inv.txt
put instock_trend.txt
quit

上面的代码被发送到 UNIX,但是当我包含

sh edastart -x "EX test"

我收到错误,我只是想知道我是否做错了什么,这样我就可以寻找其他方法来解决。任何帮助、指导或答案都将不胜感激。

答案1

不,您不能使用 FTP 协议在远程 Unix 服务器上启动程序(除非您使用它的一些奇怪的扩展)。

为什么不能使用 ssh,即使用 scp 将文件复制到远程 Unix 服务器,然后使用 ssh 登录该服务器。

答案2

如果您可以执行任意命令,那么 FTP 服务器将面临严重的安全漏洞。FTP 仅是一种文件传输方法;对于远程执行,请改用 SSH。

答案3

像其他人说的那样,使用 putty 通过 shell 进行操作。如果您需要自动化该过程,为什么不设置 cron 作业和/或触发文件?

答案4

了解一下如何使用 TCL/Expect。TCL 的 Expect 模块擅长自动执行控制台命令,包括处理登录提示和密码以及 ftp 命令。使用 Expect 脚本,您可以自动执行完整的 ftp 登录会话。任何可以手动完成的操作都可以通过 Expect 完成。您基本上可以告诉 shell 要执行什么命令,以及“期望”什么提示或响应。您的期望可以指定为硬编码值或正则表达式。使用 Expect 的一个例子是编写一个自动测试脚本,用于登录 Cisco 路由器(用户 ID/密码)、配置路由器、运行一些测试、验证结果,然后退出路由器。

相关内容