Взаимодействовать с Linux-сервером с помощью Java JAOH

Я создал программу Java, используя класс JSch. Программа успешно выполнила (ls, cd, change) команды. Этим командам не нужны никакие входные данные. Но при выполнении команды /usr/ses/b/kr требуется пароль.

Не могли бы вы ответить, как я могу отправить пароль на сервер Linux с помощью JSch. Или есть какой-то другой способ?

((ChannelExec)channel).setCommand("/usr/ses/b/kr;");

person Ashish Dugar    schedule 28.10.2013    source источник


Ответы (1)


Вы должны установить свойство StrictHostKeyChecking «нет», а канал должен быть установлен в оболочке следующим образом.

    String username = "xxxyyyzzz";
    String password = "aaabbbccc";
    String host     = "192.168.1.1"; // sample ip address
    if(command.getText().toString() != ""){
        JSch jsch = new JSch();
        try {
            session = jsch.getSession(username, host, 22);
            session.setPassword(password);

            Properties properties = new Properties();
            properties.put("StrictHostKeyChecking", "no");
            session.setConfig(properties);
            session.connect(30000);

            channel = session.openChannel("shell");
            channel.setInputStream(bais);
            channel.setOutputStream(baos);
            channel.connect();

        } catch (JSchException e) {
            // TODO Auto-generated catch block
        }
    }
    else{
        //
    }
person Ahmet Karakaya    schedule 28.10.2013
comment
не могли бы вы указать тип данных bais, а также какое начальное значение должно иметь переменную bais и baos. - person Ashish Dugar; 28.10.2013
comment
это не имеет значения, вы можете использовать channel.setInputStream(System.in); канал.setOutputStream(System.out); вместо. - person Ahmet Karakaya; 28.10.2013
comment
Я внес изменения, как было предложено. Ничего не отображается. Я хочу выполнить команду /usr/ses/b/kr; которые принимают пароль в качестве входных данных. Спасибо за ответ - person Ashish Dugar; 28.10.2013
comment
Я использовал код ниже: session = jsch.getSession(userName, host, 22); session.setPassword(пароль); Свойства свойства = новые свойства(); properties.put(StrictHostKeyChecking, нет); session.setConfig(свойства); сессия.connect(30000); канал = session.openChannel (оболочка); канал.connect(); System.out.println(Подключено); канал.setInputStream(System.in); канал.setOutputStream(System.out); - person Ashish Dugar; 28.10.2013