Я думал, могу ли я отправить оболочку для выполнения Client-Server ipconfig. Возможно ли это?
Это мой код в Local:
class Comando {
public static void main(String args[]) {
String s = null;
try {
// Determinar en qué SO estamos
String so = System.getProperty("os.name");
String comando;
// Comando para Linux
if (so.equals("Linux"))
comando = "ifconfig";
// Comando para Windows
else
comando = "ipconfig";
// Ejcutamos el comando
Process p = Runtime.getRuntime().exec(comando);
BufferedReader stdInput = new BufferedReader(new InputStreamReader(
p.getInputStream()));
BufferedReader stdError = new BufferedReader(new InputStreamReader(
p.getErrorStream()));
// Leemos la salida del comando
System.out.println("Ésta es la salida standard del comando:\n");
while ((s = stdInput.readLine()) != null) {
System.out.println(s);
}
// Leemos los errores si los hubiera
System.out
.println("Ésta es la salida standard de error del comando (si la hay):\n");
while ((s = stdError.readLine()) != null) {
System.out.println(s);
}
System.exit(0);
} catch (IOException e) {
System.out.println("Excepción: ");
e.printStackTrace();
System.exit(-1);
}
}
}
Благодарим вас в Advance!
Не очень дружественный вопрос для Stackoverflow, так как я не уверен, что вы спрашиваете о выполнении команды Shell или вообще ipconfig.
Если это первый случай: Да, вы можете использовать Runtime.getRuntime.exec()
.
Ответы на вопросы (В Stackoverflow):
Кроме ответов на предоставленные здесь ответы, вот мой пример о том, как вы это делаете с командой "host -t" для поиска DNS. Обычно я рекомендую прочитать список, который вы получите, и добавить их в String для ведения журнала.
p = Runtime.getRuntime().exec("host -t a " + domain);
p.waitFor();
BufferedReader reader =
new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";
while ((line = reader.readLine())!= null) {
sb.append(line + "\n");
}
Другим решением, которое herau было предложено использовать ProcessBuilder
и выполнить команду оттуда. Для этого вам нужно использовать Java SE 7 вверх. Вот пример, который запускает процесс с измененным рабочим каталогом и средой и перенаправляет стандартный вывод и ошибку для добавления в файл журнала:
ProcessBuilder pb =
new ProcessBuilder("myCommand", "myArg1", "myArg2");
Map<String, String> env = pb.environment();
env.put("VAR1", "myValue");
env.remove("OTHERVAR");
env.put("VAR2", env.get("VAR1") + "suffix");
pb.directory(new File("myDir"));
File log = new File("log");
pb.redirectErrorStream(true);
pb.redirectOutput(Redirect.appendTo(log));
Process p = pb.start();
assert pb.redirectInput() == Redirect.PIPE;
assert pb.redirectOutput().file() == log;
assert p.getInputStream().read() == -1;
Если вы хотите узнать больше о ProcessBuilder, прочитайте документацию: Orcale Documentation для Class ProcessBuilder