Я пытаюсь установить 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
Взаимодействие с openconnect в Java ProcessBuilder ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1719945547
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();
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78698756/interact-with-openconnect-in-java-processbuilder[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия