【问题标题】:ExitStatus 2 when I run a command over SSH with JSCH [duplicate]当我使用 JSCH 通过 SSH 运行命令时,ExitStatus 2 [重复]
【发布时间】:2018-11-21 23:53:08
【问题描述】:

我正在尝试使用 JSch 通过 SSH 运行以下命令:

算法名称 -m /tmp/input1.txt -f /tmp/input2.txt > /tmp/output.txt

exitStatus 的值为 2。该命令无法通过 SSH 与 Jsch 运行,但它在服务器上成功运行。

我的代码:

        ChannelExec channelExec = (ChannelExec) s.openChannel("exec");
        channelExec.setCommand(command);         
        channelExec.connect();

        int exitStatus = channelExec.getExitStatus();
        channelExec.disconnect();

【问题讨论】:

  • 您是否尝试使用相同的用户名通过 SSH 手动运行它?这可能是权限问题。
  • @jbx 是的,当我与服务器上的同一用户连接时,该命令运行良好
  • 我解决了这个问题。我在下面的答案中发布了解决方案

标签: java jsch


【解决方案1】:

我尝试运行的算法是用Perl编写的,实际上当我通过JSCH执行远程SSH命令时,没有加载用于运行命令的用户配置文件,因此也没有加载环境变量。

解决方案是在我运行命令时加载配置文件,如下所示:

bash -l -c 'AlgoName -m /tmp/input1.txt -f /tmp/input2.txt > /tmp/output.txt'

【讨论】:

    猜你喜欢
    • 2011-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-02
    • 1970-01-01
    • 1970-01-01
    • 2017-08-17
    相关资源
    最近更新 更多