A solução é simples, já que o Java nos dá todas as ferramentas para executar este comando. Não queremos somente executar o comando, mas gravar um log do que aconteceu. Podemos até mesmo interpretar este log e tomar alguma outra ação. No meu caso, mandar um email falando que o backup não funcionou.
O exemplo que eu vou apresentar abaixo não é do mysqldump, mas é simplesmente a saída de comando diskfree (df) no linux. Vamos lá!
/**
* Executa um comando simples no linux
* @author H3dema
*
*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
// classe principal para execucao do comando
public class DiskFree {
public BufferedReader executa() {
BufferedReader saidaComando = null;
String[] linhaComando = null;
// usamos a classe System para retornar o sistema operacional
if (System.getProperty("os.name").equals("Linux")) {
linhaComando = new String[2];
linhaComando[0] = "df";
linhaComando[1] = "-h"; // mostra "human readable"
} else if (System.getProperty("os.name").equals("Solaris")) {
linhaComando = new String[2];
linhaComando[0] = "df";
linhaComando[1] = "-k";
}
if (linhaComando == null) {
return saidaComando; // não é um dos dois sistemas operacionais --> sai
}
Process fs = null;
try {
fs = Runtime.getRuntime().exec(linhaComando);
} catch (IOException e) {
e.printStackTrace();
return saidaComando;
}
saidaComando = new BufferedReader(new InputStreamReader (fs.getInputStream()));
return saidaComando;
}
public static void main(String[] args) {
DiskFree df = new DiskFree();
BufferedReader br = df.executa();
String linhaDoBuffer = null;
try {
while ((linhaDoBuffer = br.readLine()) != null) {
System.out.println(linhaDoBuffer);
}
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
}
Neste programa utilizando algumas classes interessantes:
- System.getProperty("os name") retorna uma String com o tipo do sistema operacional
- Para executar o programa usando uma classe Process que recebe o resultado de Runtime.getRuntime().exec(linhaComando)
- A classe Process retorna um InputStream que permite receber os resultados do comando executado. No nosso exemplo, guardamos este resultado em um BufferedReader que nos permite apresentar o resultado do comando. Mas poderíamos ler estas linhas para poder executar alguma outra ação.
O resultado do comando executado é mostrado abaixo:
Muito bom canarada... Estou iniviando minha jornada em JAVA e seu post me ajudou muito.
ResponderExcluirOBRIGADO