jsch и работает "sudo su -"

Используя jsch

когда я запускаю следующий cmd 'sudo su -', программа зависает

[TestNG] Running:
C:\Users\brian.crosby\AppData\Local\Temp\testng-eclipse-952620154\testng-customsuite.xml
[root@tbx2-toy-1 ~]# 

Похоже, что "sudo su -" сработало из-за состояния вывода "[root @ tbx2-toy-1 ~] #", но когда я отправляю его другим cmd, он не отвечает.

вот код:

package com.linux;

import java.io.InputStream;
import org.testng.annotations.*;
import com.jcraft.jsch.*;
import com.thoughtworks.selenium.*;

public class LinuxConnection extends SeleneseTestBase{

    String host = null;
    private StringBuilder strFileData;
    String randomFileName = null;

    public String getFileData() {
        return strFileData.toString();
    }
    public String getRandomFileName() {
        return randomFileName;
    }

    public LinuxConnection() {
        strFileData = new StringBuilder();
    }

    @Test
    public void createUpdateTBX2FileData(String command)throws Exception {

        try {
            JSch jsch = new JSch();
            host = "brian-crosby@************.net"; 

            String user = host.substring(0, host.indexOf('@'));
            host = host.substring(host.indexOf('@') + 1);

            Session session = jsch.getSession(user, host, 22);

            UserInfo ui = new MyUserInfo();
            session.setUserInfo(ui);
            session.connect();

            ChannelExec channel = (ChannelExec)session.openChannel("exec");
            ((ChannelExec)channel).setPty(true);
            ((ChannelExec) channel).setCommand(command);

            ((ChannelExec) channel).setErrStream(System.err);

            InputStream in = channel.getInputStream();
            channel.connect();

            byte[] tmp = new byte[2048];

            while (in.read(tmp, 0, 2048) > 0) {
                String str = new String(tmp);
                strFileData.append(str);
                System.out.println(strFileData);
            }
            in.close();
            channel.disconnect();
            session.disconnect();
        } catch (Exception e) {
            System.out.println(e);
        }
    }

    public static class MyUserInfo implements UserInfo {

        public String getPassword() {
            return "********";
        }

        public boolean promptYesNo(String str) {
            str = "Yes";
            return true;
        }

        String passwd;

        public String getPassphrase() {
            return null;
        }

        public boolean promptPassphrase(String message) {
            return true;
        }

        public boolean promptPassword(String message) {
            passwd = "*******"; 
            return true;
        }

        public void showMessage(String message) {

        }
    }

}

Вот куда я отправляю cmds:

package com.linux;

import org.testng.annotations.*;

public class testLinuxConnection {

    @Test
    public void testLinux() throws Exception{
        LinuxConnection obj = new LinuxConnection();
        String command = "touch tester1.txt; sudo su -; rm tester1.txt;";
        obj.createUpdateTBX2FileData(command);  
    }
}

Опять я потратил часы на Google, пытаясь найти решение, но не удалось

Любая помощь приветствуется

Ответы на вопрос(1)

Ваш ответ на вопрос