Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Error al ejecutar un comando de CMD

Cordial saludo, he creado un método en el cual, al presionar un botón debe configurar tres elementos en la tarjeta de red desde el CMD:
Configuración tarjeta de red con ip fijas
DNS primario
DNS secundario

Son tres sentencias, si las ejecuto cada una por separado me funcionan correctamente, necesito ejecutar las tres, una tras otra, lo que hice fue colocar un salto de lìnea \n después de cada sentencia para representar un enter, pero me genera un error desde el sìmbolo del sistema (cmd),

"cmd /c netsh interface ip set address name="+"\""+AdaptadorRed.getText()+"\""+" static 192.168.0."+octeto+" 255.255.255.0 192.168.0.1 1\n"+
"netsh interface ip set dns "+"\""+AdaptadorRed.getText()+"\""+" static 200.21.200.10\n"+
"netsh interface ip add dns name="+"\""+AdaptadorRed.getText()+"\""+" 200.21.200.80";

yo probé con el comando en cmd y funciona bien, se realiza la configuración de las sentencias una tras otra

netsh interface ip set address name="Conexión de área local" static 192.168.0.56 255.255.255.0 192.168.0.1 1
netsh interface ip set dns "Conexión de área local" static 200.21.200.10
netsh interface ip add dns name="Conexión de área local" 200.21.200.80


Cual puede ser el error y cómo puedo corregirlo?

Mi botòn con el mètodo se muestra a continuación:


private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
String s = null;
int octeto=0;
octeto = (int) (Math.random() *(30-15) + 15);
try {
//Se determina el sistema operativo.
String so = System.getProperty("os.name");
String comando;
// Si el sistema operativo es Linux se ejecuta el comando "ifconfig"
if (so.equals("Linux"))
comando = "ifconfig";
else

comando = "cmd /c netsh interface ip set address name="+"\""+AdaptadorRed.getText()+"\""+" static 192.168.0."+octeto+" 255.255.255.0 192.168.0.1 1\n"+
"netsh interface ip set dns "+"\""+AdaptadorRed.getText()+"\""+" static 200.21.200.10\n"+
"netsh interface ip add dns name="+"\""+AdaptadorRed.getText()+"\""+" 200.21.200.80";
Process p = Runtime.getRuntime().exec(comando);
BufferedReader stdInput = new BufferedReader(new InputStreamReader(
p.getInputStream()));
BufferedReader stdError = new BufferedReader(new InputStreamReader(
p.getErrorStream()));
System.out.println("Ésta es la salida standard del comando:\n");
while ((s = stdInput.readLine()) != null) {
System.out.println(s);
}
System.out.println("Errores a continuación:\n");
while ((s = stdError.readLine()) != null) {
System.out.println(s);
}
} catch (IOException e) {
System.out.println("Excepción: ");
e.printStackTrace();

}

//Se abre el mensaje de dialogo que indica al usuario que se realizó la limpieza de la caché de DNS.
JOptionPane.showMessageDialog(null,"EL adaptador es" +AdaptadorRed.getText()+ octeto,"Diagnóstico Final", JOptionPane.INFORMATION_MESSAGE);


}


Gracias por su atención y colaboración.

febrero 21, 2015 | Unregistered CommenterLeonardo

"\" no se puede usar en Java así como así, porque lo interpreta como el comando "escape"
Debe usarse "\\"

febrero 21, 2015 | Registered Commenterchoces

Gracias por la respuesta, pero colocando "\\" no he obtenido la solución.

Me explico mejor, tengo 3 sentencias:

"cmd /c netsh interface ip set address name="+"\""+AdaptadorRed.getText()+"\""+" static 192.168.0."+octeto+" 255.255.255.0 192.168.0.1 1\n"+

"netsh interface ip set dns "+"\""+AdaptadorRed.getText()+"\""+" static 200.21.200.10\n"+

"netsh interface ip add dns name="+"\""+AdaptadorRed.getText()+"\""+" 200.21.200.80";

Cada una por separado funciona correctamente, pero cuando las corro a la vez, me genera un error.

febrero 24, 2015 | Unregistered CommenterLeonardo