使用JSch

时间:2016-11-28 16:25:50

标签: java linux jsch

我需要两个脚本,我想在服务器上执行。问题是,frist脚本设置了一些环境变量,必须通过

执行
. script1.ksh

而第二个只能通过

执行
script2.ksh

现在,如果我给Jsch提供以下字符串来执行

cd work_dir && . script1.ksh && ./script2.ksh

它告诉我找不到script1.ksh 如果我尝试

的话
cd work_dir && ./script1.ksh && ./script2.ksh

当然,脚本2中的变量未定义。

有没有办法在JSch中执行这样的命令?

1 个答案:

答案 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();

在断开连接之前睡觉非常重要