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

5 respostas
V

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

V

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.

M

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.

V

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+";" ));
		
                .
                .
                .
}
M

Ó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