通过JSch CommandExec

时间:2016-07-31 01:58:18

标签: bash ssh path command jsch

我在服务器上有一个bash脚本,其中包含一个不在默认路径上的命令。

如果我使用终端ssh到服务器并执行脚本,它可以正常工作(因为命令所在的目录被添加到路径中)。但是,如果我尝试通过JSch的CommandExec执行命令,我找不到"命令"错误。

是否有通过JSch执行脚本时将附加目录添加到路径?

请注意,我无法修改服务器上的脚本。它必须按原样运行。

myscript.sh

...
mycommand
...

JSch代码:

JSch jsch = new JSch();
Session session = jsch.getSession(user, host, port);
session.connect();
ChannelExec channelExec = (ChannelExec)session.openChannel("exec");
channelExec.setCommand("/path/to/myscript.sh");
channelExec.connect();

谢谢

1 个答案:

答案 0 :(得分:1)

我认为最简单的选择是更改脚本

<强> myscript.sh

.
.
/full/path/to/mycommand
.
.

当您直接从shell执行脚本时,您的登录会导致PATH生效,而当您从JSch执行时,则不会出现这种情况。

一个快速谷歌给了我[ article ]值得一读。