2016-11-28 214 views
0

我必須要兩個腳本,我要在服務器上執行。問題是,弗里斯特腳本設置一些環境變量,有而第二個可以只通過用JSch執行source命令

script2.ksh 

現在,如果我給Jsch下面的字符串來執行執行將通過

. script1.ksh 

執行

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

它告訴我script1.ksh沒有找到 得到控制而如果我嘗試

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

當然,script2中的變量沒有定義。

有沒有辦法在JSch中執行這樣的命令?

+0

您是否嘗試過在地方的''做源script1.ksh' 。 script1.ksh'? –

+0

是的,告訴我「源」沒有找到,謝謝 –

+0

'。 。/ script1.ksh'? – 2016-11-28 16:47:53

回答

0

在這篇文章的最後答案的伎倆:

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

切斷睡覺前很重要的