2016-11-28 4 views
0

У меня есть два сценария, которые я хочу выполнить на сервере. Проблема заключается в том, что Фрист скрипт устанавливает некоторые переменные окружения и должен быть выполнен с помощьюВыполнение команды источника с помощью JSch

. script1.ksh 

в то время как вторая может быть выполнена только с помощью

script2.ksh 

Теперь, если я дам JSch следующую строку, чтобы выполнить

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

Это говорит мне script1.ksh не нашел Whil, если я пытаюсь

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

Конечно, переменные в скрипте2 не определены.

Есть ли способ выполнить такую ​​команду в JSch?

+0

Вы пробовали делать 'источник script1.ksh' вместо' , script1.ksh'? –

+0

да, скажите, что «источник» не найден, спасибо в любом случае –

+0

'. ./Script1.ksh'? –

ответ

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

очень важно, чтобы спать перед отключением

Смежные вопросы