Executando comando em Java

5 respostas
Carreiro

Olá pessoal venho recorrer a vocês novamente!

Preciso que meu método execute um comando no terminal e com o direcionador salve esses dados em um arquivo .txt em uma determinada pasta para posterior leitura mas não funciona.

Não sei se é possível fazer o que eu quero, mas de qualquer modo o que preciso é dos dados da saída da execução desse comando.

Conto com a ajuda do vocês e muito obrigado!!

public void executarComando() {
		try {
			Runtime.getRuntime().exec("ls -la >> /home/user/Downloads/diretorios.txt");
		} catch (IOException e) {
			JOptionPane.showMessageDialog(null, "Não foi essa meleca!!!");
		}
	}

5 Respostas

ViniGodoy

Esse método retorna um objeto da classe Process. Esse objeto tem um InputStream e um OutputStream, que representam a saída e a entrada padrão do processo sendo executado.

Você pode redirecionar o stream para outro lugar, seja um arquivo ou o próprio console. Para isso, crie uma Thread que faz a leitura desse input stream e dispare-a.

Após disparar essa Thread, convém também chamar o método waitFor() para aguardar o termino do processo e capturar o seu valor de retorno.

Aqui nesse tópico tem uma classe com essa thread já implementada, que redireciona um stream para outro:

Carreiro

ViniGodoy,
Eu agradeço demais sua ajuda, li o tópico que vc me indicou e li também o artigo. Mas devido minha inexperiência ficaram muitas dúvidas muitos conceitos vagos, e sendo assim, não consegui montar a classe.

Tô tentando esclarecer minhas dúvidas, mas sempre esbarro em algo que não conheço.

Esse é um trabalho da faculdade que estou tomando uma surra e essa é só uma das dúvidas.

O trabalho é:

Desenvolver um aplicativo Web para realizar a varredura da rede, pegar os IP’s de cada máquina conectada na rede, verificar as portas abertas de cada máquina, nome da máquina e o sistema operacional, exibir em interface web e armazenar os dados em banco de dados para posterior consulta.

Orientações do professor: Usar Linux para poder integrar com Nmap (software linux para scaneamento de rede), criar máquinas virtuais para o teste do sistema.

Vou usar o nmap para isso, rodo o ele e salvo em um txt a saída do comando, depois pego o que interessa e retorno pra interface web.

Sei que estou abusando mas vc poderia me dar uma força, não tenho conhecimento para fazer este trabalho ainda, mas o danado do professor pediu e a única linguagem que conheço, e muito pouco como vc pode ver é Java!

**O comando “ls -la” citado no topo era somente para simplificar as coisas.

Muito obrigado!!

ViniGodoy

Mas vc não conseguiu nem usar a classe pronta, como o tópico indica?

Carreiro

Sei que é vergonhoso mas não!!

:oops:
:oops:
:oops:

E se eu fizer uma gambiarra?

Crio um script que faça isso e mando executar ele?

Obrigado!

Carreiro

Mandando executar o script foi!!!

:lol:

ViniGodoy consegui assim!!!

Feio mais funcionou!!! UFA!

Vou depois ver se consigo fazer isso do jeito certo!!

Por enquanto vai rodar assim.

Muito obrigado pela disponibilidade cara!!

Criado 31 de março de 2011
Ultima resposta 3 de abr. de 2011
Respostas 5
Participantes 2