Se connecter avec
S'enregistrer | Connectez-vous

Lecture un fichier champ par champ en java

Dernière réponse : dans Programmation

Bonjour,
j'ai essayer de faire un petit programme sur sécurité des réseau ad hoc par firewall sous linux. je tape ses règles par la commande iptables et maintenant je fais la programmation en java. la première étape "afficher tout la tables" est fonctionne mais la deuxième parti qui consiste :lecture champ par champ par la commande tokenizer je souhaite de me aider.
merci.
Lassé par la pub ? Créez un compte

Tu n'as pas de limite de taille pour le String du constructeur de StringTokenizer.
Et tu as déjà les champs un par un; tu les préfères dans un tableau ?

  1. StringTokenizer stok = new StringTokenizer("ceci est un texte de test pour 8860855" );
  2. String[] lesElements = new String[stok.countTokens()];
  3. int iTok = 0;
  4. while (stok.hasMoreTokens()) {
  5. lesElements[iTok] = stok.nextToken();
  6. iTok++;
  7. }
  8. for (int j=0; j < lesElements.length; j++) {
  9. System.out.println(lesElements[j]);
  10. }


Dis-moi si c'est ce que tu veux.

Edit : balises code rajoutées à la demande de Crazycat

oui c'est ce que je veux
voila le programme

  1. import java.io.*;
  2. import java.util.StringTokenizer;
  3.  
  4. public class Discfree
  5.  
  6. {
  7.  
  8. public static void main (String [] args) throws IOException
  9. {
  10.  
  11. String Command = "iptables -L";
  12.  
  13. Process Findspace = Runtime.getRuntime().exec(Command);
  14.  
  15. BufferedReader Resultset = new BufferedReader(new InputStreamReader(Findspace.getInputStream()));
  16.  
  17. String line;
  18.  
  19. while ((line = Resultset.readLine()) != null)
  20. {
  21.  
  22. StringTokenizer stok = new StringTokenizer("num target prot opt source destination");
  23. String[] leselements = new String[stok.countTokens()];
  24. int iTok=0;
  25. while (stok.hasMoreTokens())
  26. {
  27. leselements[iTok] = stok.nextToken();
  28. iTok++;
  29. }
  30. for(int j=0;j<leselements.length;j++)
  31. {
  32. System.out.println(leselements[j]);
  33. }
  34. }
  35. }
  36.  
  37.  
  38. }



et voila leur execution
num
target
prot
opt
source
destination
num
target
prot
opt
source
destination
num
target
prot
opt
source
destination
num
target
prot
opt
source
destination
num
target
prot
opt
source
destination
num


voila la tables d’iptables :

Chain INPUT (policy DROP)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
2 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state NEW
4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80
5 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
6 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:23
7 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:53
8 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:20
9 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:21
10 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0

Chain FORWARD (policy DROP)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state NEW
2 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state NEW,RELATED,ESTABLISHED
4 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state NEW,RELATED,ESTABLISHED,UNTRACKED
5 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED

Chain OUTPUT (policy DROP)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
2 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
5 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state NEW


Je veux faire l’exécution de chaque colonne avec ses informations
Merci.

Je ne peux pas t'aider plus; je ne sais pas comment on exploite une iptable.

Mais pour récupérer tes infos de table, il faudra mettre :

new StringTokenizer(line );

au lieu de :

new StringTokenizer("num target prot opt source destination" );
Lassé par la pub ? Créez un compte
Tom's guide dans le monde