Java 当我使用JSCH通过SSH运行命令时退出状态2
我正在尝试使用JSch通过SSH运行以下命令: AlgoName-m/tmp/input1.txt-f/tmp/input2.txt>/tmp/output.txt exitStatus的值为2。该命令不能通过SSH和Jsch工作,但它在服务器上成功运行 我的代码:Java 当我使用JSCH通过SSH运行命令时退出状态2,java,jsch,Java,Jsch,我正在尝试使用JSch通过SSH运行以下命令: AlgoName-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 channelExec = (ChannelExec) s.openChannel("exec");
channelExec.setCommand(command);
channelExec.connect();
int exitStatus = channelExec.getExitStatus();
channelExec.disconnect();
我试图运行的算法是用Perl编写的,实际上,当我通过JSCH执行远程SSH命令时,用于运行命令的用户配置文件没有加载,因此环境变量也没有加载 解决方案是在运行命令时加载配置文件,如下所示:
bash -l -c 'AlgoName -m /tmp/input1.txt -f /tmp/input2.txt > /tmp/output.txt'
您是否尝试使用相同的用户名通过SSH手动运行它?这可能是权限问题。@jbx是的,当我与服务器上的同一用户连接时,该命令工作正常,我解决了问题。我在下面的答案中发布了解决方案