Como salvar uma resposta a comandos e como gerar arquivos a cada captura

5 respostas
vittorino

Sr.s, bom dia!

Vejam se podem me ajudar:
Tenho uma aplicação desktop que se conecta na minha plataforma e envia alguns comando que verificam o status do sistema, até aqui está funcionando. Eu preciso guardar a resposta destes comandos em um arquivo .txt a cada hora cheia, agora vem minha dificuldade. Como salvar a resposta e como gerar arquivos com a data e horário da captura. Ex. de nome: log201107232300.txt

Desde já obrigado;

5 Respostas

C

vc pode usar shell script para criar o log… executar comandos diretos no sistema operacional… criando um arquivo com o nome q vc quiser… e com os dados dentro dele… nao eh minha especialidade mas fiz alguns exemplos criando arquivos txt e editando conteudo atravez de um shell script em linux… eh possivel fazer no windows tb… vc precisa fazer um script que va ate a pasta de log q vc definir… crie um arquivo txt e edite o conteudo dele jogando os logs pra dentro do txt…

todo esse script vc cria pelo java como string e de alguma forma vc executa no interpretador do sistema operacional… nao conheco mt do java… pode ser q exista alguma classe q ja faça isso… ou bem parecido com isso … mas o caminho tem essa base que te falei… espero ter ajudado abrass

vittorino

clauslk,

Essa alternativa não seria exatamente o que eu quero. São oito plataformas que eu tenho que colher essas informações, meu aplicativo se conecta em cada uma delas executa alguns comandos e agora eu preciso guardá-las a cada hora cheia em arquivos diferentes. Estou usando a biblioteca jakarta commons.

matheuslmota

Não sei se entendi corretamente. O seguinte código executa um shell script e pega a saída da execução e escreve em um arquivo:

Process process = Runtime.getRuntime().exec("/bin/sh -c script.sh"); String line = null; BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream())); Calendar calendar = Calendar.getInstance(); String fileName = "log" + Integer.toString(calendar.get(Calendar.YEAR)) + Integer.toString(calendar.get(Calendar.MONTH)) + Integer.toString(calendar.get(Calendar.DAY_OF_MONTH)) + Integer.toString(calendar.get(Calendar.HOUR)) + Integer.toString(calendar.get(Calendar.MINUTE)) + ".txt"; BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName))); while((line = bufferedReader.readLine()) != null) bufferedWriter.write(line+"\n"); bufferedReader.flush(); bufferedReader.close(); bufferedWriter.flush(); bufferedWriter.close();

Para verificar se é uma hora cheia, você pode criar uma Thread e dentro de dela colocar o seguinte código:

Thread.sleep(60*60*1000); if (Calendar.getInstance().get(Calendar.MINUTE) == 0) { //Chame aqui o código que executa o script e gera o arquivo de Log }
Espero que isso ajude.

Obs.: Sinto que esse meu código para gerar o nome do arquivo a partir da data e da hora em breve vai está no tópico de códigos toscos. Se alguém tiver uma solução pra melhorar isso, será muito bem vinda.

vittorino

Valeu Matheus abriu as idéias!
Ficou meio tosco mas funcionou !!!

public static void main(String[] args) throws FileNotFoundException {

		//Convertendo data para string
		Date date = new Date();
		SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd_hh:mm");
		String date2, date3;
		date2 = format.format(date);
		SimpleDateFormat formata = new SimpleDateFormat("yyyy-MM-dd");
		date3 = formata.format(date);

		//Criando arquivo
		OutputStream saida = new FileOutputStream("c:\\Network50_"+date2+".txt");
               OutputStreamWriter writer = new OutputStreamWriter(saida);
		BufferedWriter buffer = new BufferedWriter (writer);
		
               // Conectando ao elemento
		try {
			TelnetSample telnet = new TelnetSample( "10.222.157.76", 
					"usr", 
			"usr" );
		
               // Executando comandos	
			buffer.write(telnet.sendCommand( "ZAHP:"data3+";" ));
		
                .
                .
                .
}
matheuslmota

Ótimo, disponha. Agora edite seu primeiro post e acrescente [Resolvido] ao título do post.

Criado 23 de julho de 2011
Ultima resposta 25 de jul. de 2011
Respostas 5
Participantes 3