Попытка подключиться к удаленному серверу с помощью sshj

Я хочу подключиться к удаленному серверу с помощью sshj и выполнить некоторые команды. Команды, которые я хочу сделать, следующие: 1. войдите в систему через шпатлевку, введите имя пользователя и пароль 2. затем sudo su - oracle 3. затем снова пароль 4. затем «sqlplus / nolog» 5. затем «подключиться как sysdba» 6 , затем пару команд sql 7. Затем выйдите обратно и выполните imdmp

Я ищу лучший/самый простой способ сделать это. Вот что я сделал до сих пор.

i

mport java.io.IOException;
import java.util.concurrent.TimeUnit;

import net.schmizz.sshj.SSHClient;
import net.schmizz.sshj.common.Base64.OutputStream;
import net.schmizz.sshj.common.IOUtils;
import net.schmizz.sshj.connection.channel.direct.Session;
import net.schmizz.sshj.connection.channel.direct.Session.Command;
import net.schmizz.sshj.transport.verification.PromiscuousVerifier;

public class FileCreator {

    public static void main(String[] args) throws IOException {
        final SSHClient client = new SSHClient();
        client.addHostKeyVerifier(new PromiscuousVerifier());
        client.connect("192.168.x.x");

        client.authPassword("username", "password");
        Session session = client.startSession();
        Command cmd = session.exec("sudo su - oracle");
        cmd.join(1, TimeUnit.SECONDS);
        session.close();

        session = client.startSession();
        Command cmd21 = session.exec("password");
        cmd21.join(1, TimeUnit.SECONDS);
        session.close();

        session = client.startSession();
        Command cmd3 = session.exec("1");
        cmd3.join(1, TimeUnit.SECONDS);
        session.close();

        session = client.startSession();
        Command cmd4 = session.exec("sqlplus /nolog");
        cmd4.join(1, TimeUnit.SECONDS);
        session.close();

        session = client.startSession();
        Command cmd5 = session.exec("connect / as sysdba");
        cmd5.join(1, TimeUnit.SECONDS);
        session.close();

        session = client.startSession();
        Command cmd2 = session.exec("drop user STN_x cascade");
        cmd2.join(1, TimeUnit.SECONDS);
        session.close();

        session = client.startSession();
        Command cmd20 = session.exec("drop user STN_x_dba cascade;");
        cmd20.join(1, TimeUnit.SECONDS);
        session.close(); 

        session = client.startSession();
        Command cmd6 = session.exec("");
        cmd6.join(1, TimeUnit.SECONDS);
        session.close();






        client.disconnect();

    }

}

person user9558800    schedule 29.03.2018    source источник
comment
Это нормально работает без проблем?   -  person Chamara Maduranga    schedule 29.03.2018
comment
В консоли я получаю такие результаты [main] INFO net.schmizz.sshj.connection.channel.direct.SessionChannel - будет запрашивать exec sudo su - oracle Насколько я знаю, команды на самом деле не работают (поскольку никаких изменений не внесено в базе). Есть ли какие-нибудь способы проверки, кроме этого?   -  person user9558800    schedule 29.03.2018
comment
проверьте это stackoverflow.com/questions/22723538/   -  person Jose Da Silva    schedule 30.03.2018