Hola,
Creo que tienes algunos errores que producen que no obtengas el resultado, pero no me es posible corregirlos simplemente o hacerlo breve; así que agregue comentarios al código. En la parte final va una implementación para que puedas adaptarlo a tus necesidades.
Código:
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;
public class conectividad {
public static void main(String[] args) throws IOException {
// Process n1;
Process n2;
String hola = "Respuesta desde 192.168.1.1: bytes=32 tiempo<1m TTL=64";
Runtime runtime = Runtime.getRuntime();
/*
* path --> C:\\batch.bat ó C:/batch.bat
* El caracter \ es el de escape.
* ver java.io.File.separator
*/
String path = "C://batch.bat";
FileWriter archivoescritura = new FileWriter("c:\\conectividad.txt");
PrintWriter archivoSalida = new PrintWriter(archivoescritura);
n2 = runtime.exec(path);
/*
* n2.getInputStream() --> Eso es un objeto y no estas trasladando
* los datos que mandó el proceso n2. Solamente el Objeto convertido a toString()
* algo como "java.io.BufferedInput...."
*/
archivoSalida.println(n2.getInputStream());
/*
* close() --> Posiblemente el proceso n2 todavía no ha terminado
* de escribir todo en su stream, el proceso todavía no ha salido.
*/
archivoSalida.close();
File archivo1 = new File("c:\\conectividad.txt");
/*
* Scanner --> Se utiliza para leer archivos de datos con formato,
* pero no tiene mucho sentido para leer sólo lineas en Strings.
*/
Scanner archivolectura = new Scanner(archivo1);
while (archivolectura.hasNext()) {
String linea = archivolectura.nextLine();
/*
* linea --> Invariablemente va a imprimir algo como
* java.io.BufferedInputStream@XXX o algo parecido.
*/
System.out.println(linea);
/*
* linea nunca va a ser igual a hola, por que es un
* string que dice "java.io.BufferedInputSt..."
*/
if (linea == hola) {
System.out.println("Hay conectividad");
} else {
System.out.println("No hay conectividad");
}
}
}
public static void main2(String[] args) {
String PING = "PING www.yahoo-ht3.akadns.net (69.147.76.15) 56(84) bytes of data.";
try {
java.lang.Process process = java.lang.Runtime.
getRuntime().exec("/home/rand/batch.sh");
process.waitFor();
if (process.exitValue() == 0) {
java.io.BufferedReader reader = new java.io.BufferedReader(
new java.io.InputStreamReader(process.getInputStream()));
String tester = reader.readLine();
if (tester != null)
System.out.println(tester.equals(PING) ? "Connected" : "Disconnected");
else
System.out.println("El proceso no devolvió nada.");
} else {
throw new java.lang.RuntimeException(
"El proceso no se ejecutó correctamente.");
}
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
}
}
Saludos.
ps:
Error java.io.BufferedInputStream@1fb8ee3 :
No es una excepción, el código lo imprime con esta línea:
System.out.println(linea);
Por que en el String línea esta eso : "java.io.BufferedInputStream@1fb8ee3"