Взаимодействие с openconnect в Java ProcessBuilderJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Взаимодействие с openconnect в Java ProcessBuilder

Сообщение Anonymous »

Я пытаюсь установить VPN-соединение с помощью ProcessBuilder на Java. Однако процесс, похоже, блокируется, и ввод моего пароля не имеет никакого эффекта.
Я не могу включить свое имя пользователя и пароль непосредственно в командную строку, поскольку они могут меняться со временем, и для Из соображений безопасности меня иногда просят ввести второй пароль.
Мне известны параметры nohup и --background в Linux, но мне также не удалось заставить их работать.
Вторым шагом будет открытие формы, чтобы пользователь мог ввести пароль (как в SWT), как обрабатывать потоки?
Любая помощь приветствуется.
Вот что у меня есть на данный момент:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class OpenConnect {
public static void main(String[] args) {
try {
String command = "sudo openconnect --protocol=nc -u user adress";
Process process = Runtime.getRuntime().exec(command);

BufferedReader stdInput = new BufferedReader(new InputStreamReader(process.getInputStream()));
BufferedReader stdError = new BufferedReader(new InputStreamReader(process.getErrorStream()));
OutputStreamWriter stdOutput = new OutputStreamWriter(process.getOutputStream());

String line;
boolean passwordPrompt1 = false;
boolean passwordPrompt2 = false;

while ((line = stdInput.readLine()) != null || (line = stdError.readLine()) != null) {
if (line != null) {
System.out.println(line);
if (line.contains("password:") && !passwordPrompt1) {
passwordPrompt1 = true;
} else if (line.contains("password:") && passwordPrompt1) {
passwordPrompt2 = true;
}
}

if (passwordPrompt1) {
System.out.print("Enter first password: ");
String password1 = new BufferedReader(new InputStreamReader(System.in)).readLine();
stdOutput.write(password1 + "\n");
stdOutput.flush();
passwordPrompt1 = false;
}

if (passwordPrompt2) {
System.out.print("Enter second password: ");
String password2 = new BufferedReader(new InputStreamReader(System.in)).readLine();
stdOutput.write(password2 + "\n");
stdOutput.flush();
passwordPrompt2 = false;
}
}

stdOutput.close();
stdInput.close();
stdError.close();

int exitCode = process.waitFor();
System.out.println("Process exited with code " + exitCode);

} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/786 ... essbuilder
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»