Andre Souza

mininumau!


20050613 Segunda-feira Junho 13, 2005
Oi Morticia Esse codigo abaixo é a Morticia, um programa que uso para repitir comandos com parametros diferentes tipo um rsh ex: tenho que executar uma mesma operacao em 7 maquinas, simples o que eu faço é criar um arquivos com os hostnames das maquinas ex: ----------------- salacom7maquinas.hosts ----------------- murderdoll littledoll casualtie jumpstarserversp sunray-server-01 sunray-server-07 punkgirl ------------------ e em seguida executar o comando apropriado e um parametro em segui ex: java Morticia rsh salacom7maquinas.hosts "ls /export/home" ------------------------------- COMANDO: rsh SUB-COMANDO: murderdoll PARAMETRO: ls /export/home SAIDA DO COMANDO info_cursos info_cursos.tar.gz lost+found student ------------------------------- ------------------------------- COMANDO: rsh SUB-COMANDO: punkgirl PARAMETRO: ls /export/home SAIDA DO COMANDO info_cursos sexpics.zip lost+found student ------------------------------- ------------------------------- COMANDO: rsh SUB-COMANDO: sunray-server-01 PARAMETRO: ls /export/home SAIDA DO COMANDO info_cursos Dimmu_Borgir-Kings-Of-Carnival-Creation.mp3 lost+found student ------------------------------- ...... da para notar que a saida do comando não está seguindo a ordem da lista pois ele é muilti thread e fica impossivel saber na pratica qual maquina vai responder primeiro tambem por diversos fatores e alem disso dsaber qual thread chegou primeiro, outro exemplo: java Morticia grep salacom7maquinas.hosts /etc/hosts ------------------------------- COMANDO: grep SUB-COMANDO: punkgirl PARAMETRO: /etc/hosts SAIDA DO COMANDO 192.168.200.104 punkgirl ------------------------------- ------------------------------- COMANDO: grep SUB-COMANDO: murderdoll PARAMETRO: /etc/hosts SAIDA DO COMANDO 192.168.200.104 murderdoll ------------------------------- ------------------------------- COMANDO: grep SUB-COMANDO: casualtie PARAMETRO: /etc/hosts SAIDA DO COMANDO 192.168.200.104 casualtie ------------------------------- ...... nossas amigas murderll e punkgirl estão sempre aparecendo, está abaixo o codigo do programa, fiz apenas em uma classe pois estava com presa no que tinha que fazer, import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReader; public class Morticia implements Runnable { private String comando; private String subComando; private String parametro; private String arquivo; public void setComando(String comando) { this.comando=comando; } public void setSubComando(String subComando) { this.subComando=subComando; } public void setParametro(String parametro) { this.parametro=parametro; } public void setArquivo(String arquivo) { this.arquivo=arquivo; } public String getComando() { return comando; } public String getSubComando() { return subComando; } public String getParametro() { return parametro; } public String getArquivo() { return arquivo; } public void exec() throws IOException { Process process = Runtime.getRuntime().exec(getComando()+" "+getSubComando()+" "+getParametro()); BufferedReader buffer = new BufferedReader(new InputStreamReader(process.getInputStream())); String entrada = buffer.readLine(); String saida=""; while((entrada)!=null) { saida+=entrada +"\n"; entrada=buffer.readLine(); } String corpo = "-------------------------------\n"; corpo+="COMANDO: "+getComando()+"\n"; corpo+="SUB-COMANDO: "+getSubComando()+"\n"; corpo+="PARAMETRO: "+getParametro()+"\n"; corpo+="SAIDA DO COMANDO\n"; corpo+=saida; corpo+="\n-------------------------------"; System.out.println(corpo); } public int numeroLinhas() throws IOException { BufferedReader bufferFile = new BufferedReader(new FileReader(getArquivo())); int cont=0; String linha = bufferFile.readLine(); while(linha!=null) { linha = bufferFile.readLine(); cont++; } return(cont); } public String getLinha(int numLinha) throws IOException { BufferedReader bufferFile = new BufferedReader(new FileReader(getArquivo())); int maxLinesFile = (numeroLinhas()-1); //o caso do -1 ja foi comentado a cima int cont=0; String linha = bufferFile.readLine(); if(numLinha>maxLinesFile) throw new IOException("Linha invalida"); while(linha!=null) { linha = bufferFile.readLine(); if(numLinha==cont) break; cont++; } return(linha); } public void start() throws Exception { //os contadores do programa iniciam em 0 por isso decremento 1 do total de linhas int numObjects = (numeroLinhas()-1); System.out.println("Morticia.Iniciando-Array-de-Objetos"); Morticia morticia[] = new Morticia[numObjects]; System.out.println("Morticia.Iniciando-Array-de-Threads"); Thread thread[] = new Thread[numObjects]; System.out.println("Morticia.setando Objectos"); for(int i=0; i < numObjects; i++) { morticia[i] = new Morticia(); morticia[i].setComando(getComando()); morticia[i].setSubComando(getLinha(i)); morticia[i].setParametro(getParametro()); morticia[i].setArquivo(getArquivo()); thread[i] = new Thread(morticia[i]); } System.out.println("Morticia.Iniciando Threads"); for(int i=0; i< numObjects; i++) { thread[i].start(); } } public void run() { try { exec(); } catch(Exception e) { System.out.println("ThreadErro: "+e.getMessage()); } } public static void main(String[] args) { if(args.length>=3) { Morticia morticia = new Morticia(); try { System.out.println("Iniciando Morticia 1.0"); morticia.setComando(args[0]); morticia.setArquivo(args[1]); morticia.setParametro(args[2]); /*System.out.println(morticia.getLinha(0)); System.out.println(morticia.getLinha(1)); System.out.println(morticia.getLinha(2)); System.out.println(morticia.getLinha(5));*/ morticia.start(); } catch(Exception e) { System.out.println("ERRO: "+e.getMessage()); } } else { System.out.println("Use: java Morticia "); } } } Falow !! AS.
20050611 Sábado Junho 11, 2005
Motdlabs.org muito bom site, com uma e-zine legal que tem diversos artigos sobre hacking!
20050610 Sexta-feira Junho 10, 2005
MercenariesClub Grupo Brasileiro de Hacking, na minha opniao o melhor! AS.
Andre Souza Por que Faz Isso ? Por que ? Por Que ?

Today's Page Hits: 2