Hola de nuevo,
el caso es que sé hacer la consulta MySQL (he probado que funciona) y he encontrado código para hacer los pings pero no sé cómo hacer interactuar ambos códigos. Es debido a mi aún corto conocimiento de Java. Os lo expongo:
LaBaseDatos.java
Código:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.*;
public class LaBaseDatos {
//Atributos
private Connection con;
private Statement st;
private String consulta = "SELECT ip FROM equipos WHERE monitorizar='1'";
private String contar = "SELECT COUNT(ip) FROM equipos WHERE monitorizar='1'";
//Constructor
public laBaseDatos(){
// Cargar el controlador
try{
Class contr = Class.forName("com.mysql.jdbc.Driver");
System.out.println(contr.toString());
}catch (ClassNotFoundException cnfe){
System.out.println("com.mysql.jdbc.Driver");
}
//Conectar con la BD
try{
//String direccion. Hace referencia a una URL, un recurso de la aplicacion
Connection micon = DriverManager.getConnection("jdbc:mysql://localhost/Comercio","root","");
//Crear objeto Statement
Statement st = micon.createStatement();
this.con = micon;
this.st = st;
}catch(SQLException sqle){
System.out.println("Error al establecer la conexion");
}
}
//Métodos
// Ejecuta una consulta de seleccion, devolviendo el objeto "ResultSet"
//con los datos obtenidos en la consulta
public ResultSet selecciona (String consulta) throws SQLException{
return this.st.executeQuery(consulta);
}
public ResultSet elSize (String contar) throws SQLException{
return this.st.executeQuery(contar);
}
//Obtener el ResultSet
public ResultSet getResultSet() throws SQLException{
return this.st.getResultSet();
}
//Obtener el conector
public Connection getCon(){
return this.con;
}
}
ElComando.java
Código:
import java.io.*;
public class elComando {
public static void main(String[] args)
{
try
{
String[] command = {"sh","-c","/api/utils/check_fping <<ip>>"};
// Se debería cambiar <<ip>> por cada una de las IP's del resulSet
final Process process = Runtime.getRuntime().exec(command);
new Thread()
{
public void run()
{
try{
InputStream is = process.getInputStream();
byte[] buffer = new byte[1024];
for(int count = 0; (count = is.read(buffer)) >= 0;)
{
System.out.write(buffer, 0, count);
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
}.start();
new Thread()
{
public void run()
{
try{
InputStream is = process.getErrorStream();
byte[] buffer = new byte[1024];
for(int count = 0; (count = is.read(buffer)) >= 0;)
{
System.err.write(buffer, 0, count);
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
}.start();
int returnCode = process.waitFor();
System.out.println("Return code = " + returnCode);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
¿Debo crear una nueva clase para hacerlos interactuar o puedo hacerlo directamente en el Main?
Cualquier ayuda sería muy agradecida. Saludos.