#!/bin/sh
export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which javac))))
echo JAVA_HOME=$(dirname $(dirname $(readlink -f $(which javac))))
echo JAVA_HOME=$JAVA_HOME
${JAVA_HOME}/bin/java -jar xxxxx
獲得$ JAVA_HOME我想在jsch在遠程機器上執行這個腳本:如何通過Jsch
public boolean actionShell(Session sshSession, String command) {
boolean flag = false;
Channel channel = null;
try {
channel = sshSession.openChannel("exec");
((ChannelExec) channel).setCommand(command);
channel.setInputStream(null);
((ChannelExec) channel).setErrStream(System.err);
InputStream in = channel.getInputStream();
channel.connect();
while (true) {
if (channel.isClosed()) {
if (in.available() > 0) continue;
flag = channel.getExitStatus() == 0 ? true : false;
log.info("exit-status: " + flag);
break;
}
Thread.sleep(1000);
}
} catch (Exception e) {
log.error("error", e.getMessage());
} finally {
if (channel != null || channel.isConnected())
channel.disconnect();
}
return flag;
}
結果表明,這個sh腳本不能得到JAVA_HOME的值。
JAVA_HOME=
JAVA_HOME=
/bin/java -jar xxxxx
由於我們沒有得到遠程matchine的conf,所以我們不能指出JAVA_HOME。
你得到不同的結果,當你在一個交互式SSH終端執行腳本? –