我需要两个脚本,我想在服务器上执行。问题是,frist脚本设置了一些环境变量,必须通过
执行. script1.ksh
而第二个只能通过
执行script2.ksh
现在,如果我给Jsch提供以下字符串来执行
cd work_dir && . script1.ksh && ./script2.ksh
它告诉我找不到script1.ksh 如果我尝试
的话cd work_dir && ./script1.ksh && ./script2.ksh
当然,脚本2中的变量未定义。
有没有办法在JSch中执行这样的命令?
答案 0 :(得分:-1)
这篇文章的最后一个答案就是诀窍:
Multiple commands through Jsch Shell
JSch jsch = new JSch();
Session session = jsch.getSession(scpInfo.getUsername(), scpInfo.getIP(), scpInfo.getPort());
session.setPassword(scpInfo.getPassword());
setUpHostKey(session);
session.connect();
Channel channel=session.openChannel("shell");//only shell
channel.setOutputStream(System.out);
PrintStream shellStream = new PrintStream(channel.getOutputStream()); // printStream for convenience
channel.connect();
for(String command: commands) {
shellStream.println(command);
shellStream.flush();
}
Thread.sleep(5000);
channel.disconnect();
session.disconnect();
在断开连接之前睡觉非常重要