我正在尝试使用SSHOperator SSH到远程机器并通过命令行运行外部应用程序。我已经通过管理页面设置了SSH连接。
这段代码用于定义命令和到外部机器的SSH连接。
sshHook = SSHHook(ssh_conn_id='remote_comp')
command_1 ="""
cd /files/232-065/Rans
bash run.sh
"""
其中run.sh运行shell脚本:
#!/bin/sh
starccm+ -batch run_export.java Rans_Model.sim
它只是运行商业软件starccm+和我指定的一些选项。
本节定义任务:
inlet_profile = SSHOperator(
task_id='inlet_profile',
ssh_hook=sshHook,
command=command_1
)
我已经通过给出一个简单的'ls'命令并检查输出来确认SSH连接工作。
我得到的错误是:bash run.sh, error: run.sh: line 2: starccm+: command not found
当我登录到机器时,'run.sh'中的命令可以工作(它不需要GUI)。这让我认为SSH会话有问题,它与Apache气流登录的会话不一样,但我不确定如何解决这个问题。
有人有这方面的经验吗?
SSH连接没有问题(至少从错误消息来看)。但是,问题在于starccm+的安装路径。
Please check ofstarccm+
.
检查安装路径是否为$ path环境变量
的一部分$ echo $PATH
如果没有,那么将其安装在标准位置,如/bin
或/usr/bin
等(前提是它们包含在$PATH
变量中),或者将安装的目录导出到PATH变量中,如下所示
$ export PATH=$PATH:/<absolute_path>
这是不理想的,但如果您在设置路径变量时遇到困难,您可以运行starccm,并声明完整的路径,如:
/directory/where/star/is/installed/starccm+ -batch run_export.java Rans_Model.sim