尝试使用以下代码执行远程服务器中存在的.sh文件。
String command1="/home/support/test.sh";
try{
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
JSch jsch = new JSch();
Session session=jsch.getSession(user, host, 22);
session.setPassword(password);
session.setConfig(config);
session.connect();
System.out.println("Connected");
Channel channel=session.openChannel("exec");
((ChannelExec) channel).setCommand(command1);
((ChannelExec) channel).setErrStream(System.err);
channel.connect();
channel.disconnect();
session.disconnect();
shell脚本中的内容:
flname="12.log"
yest=`head -1 yes.txt`
filename=$flname.$yest
filename3=${filename}_prod3
scp user@82.xx.xx.xx:/app/12/log/${filename}
/home/support/${filename}
mv ${filename} ${filename3}
today=$( date +"%Y-%m-%d")
java -jar /home/hybris/support/timeoutRprt.jar /home/support/${filename3}
从桌面上的java类执行远程服务器中存在的脚本后,它不会在远程服务器中创建文件(脚本中存在的jar文件的输出)。 但是如果我通过putty手动执行脚本,它会生成所需的文件。
这可能是什么情况?
答案 0 :(得分:1)
在JSCH和PuTTY下运行时,您确定它们是从同一目录运行的吗?事实上它在一个案例中找不到yes.txt但在另一个案例中它可以在本地目录中找到差异。您是否使用相同的登录JSCH和PuTTY?