По моему опыту, channel.getExitStatus (), возвращающий -1, означает, что процесс еще не завершен.Вы уверены, что даете процессу достаточно времени для выполнения и завершения?Вы не включили код для convertISToString (is), так что, возможно, он обрабатывает вещи правильно, но, на всякий случай, из примера JSch Exec.java, один из способов ожидания его правильного завершения и получения кода выхода состоит в том, чтобы сделать что-токак:
while(true){
while(in.available()>0){
int i=in.read(tmp, 0, 1024);
if(i<0)break;
System.out.print(new String(tmp, 0, i));
}
if(channel.isClosed()){
System.out.println("exit-status: "+channel.getExitStatus());
break;
}
try{Thread.sleep(1000);}catch(Exception ee){}
}