[C]Traceroute en parallèle

Prince -  
 maxidoh -
Bonjour,

je dois écrire un programme permettant de lancer plusieurs traceroute et de mettre le résultat dans un fichier.
Dans ce fichier, doit seulement apparaitre les adresses ip obtenues et ces adresses doivent être ordonnées suivant suivant leur distance minimales.

Pour ce qui est du lancement d'un traceroute, je n'ai pas de problème pour la récupération des adresses ip.

Mon problème se trouve lorsque plusieurs sont lancés, je ne sais pas comment m'y prendre pour avoir les ip comme il est demandé.

Si quelqu'un pouvait m'aider?

Merci par avance.

PS : Si vous ne comprenez pas quelque chose dites le

5 réponses

Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Salut.
Je pense que tu n'es pas clair sur un point. Tu lance ton traceroute sur IP1,IP2,IP3. Pour chacun des trois IP, tu obtiens une route, que je note IP1.1 à IP1.5(par ex).
Doit tu sortir un fichier avec : (ordonnée du plus proche au plus loin)
IP1.1
IP2.2
IP1.2
IP3.1
etc...
ou juste la liste ordonnée pour chaque IP?
0
Prince
 
Salut,

c'est ça, il doit être ordonné du plus proche au plus loin.

Pour chaque traceroute,il faut pouvoir connaitre ses voisins ainsi que sa distance minimale à l'origine

Exemple :
Il faut récupérer les données de traceroute et les
analyser... (extraire l'adresse IP)

Ensuite, on trace une première branche (Les lettres représentes des
adresses IP)

traceroute X
A
B
C
X

A -> B -> C -> X

Puis on la complète...

traceroute Y
A
B
E
G
Y

A -> B -> C -> X
+ -> E -> G -> Y

traceroute Z
A
B
C
H
Z

A -> B -> C -> X
| + -> H -> Z
+ -> E -> G -> Y

etc...
0
Prince
 
Bonjour,

personne n'a d'idées sur mon problème?
0
Prince
 
Bonjour,

J'ai fait ceci pour l'envoi des traceroute, j'aurais maitenant besoin d'aide pour le traitement des résultats.

Est-ce que quelqu'un pourrait m'aider?

Merci par avance

int nb_ip; /* nombre d'adresses IP à tracerouter */
char **target_ip; /* adresses IP à tracerouter */

char cmd[128]; /* la commande "traceroute <adresse IP>" à effectuer */
FILE **traceroute /* les résultats des commandes traceroute */

int i;

/* ajouter toutes les bonnes initialisations / allocations */

/* lancement des commandes traceroute dans des processus fils */
for( i=0 ; i<nb_ip ; ++i )
{
  snprintf( cmd, 128, "traceroute %s", target_ip[i] ); /* construction de la commande à exécuter */
  traceroute[i] = popen( cmd, "r" );
  if( !traceroute[i] )
  {
    perror( "traceroute" );
    /* gestion de l'erreur */
  }
}

/* traitement des résultats des traceroute */
/* ... */

/* fermeture des tuyaux */
for( i=0 ; i<nb_ip ; ++i )
{
  pclose( traceroute[i] );
}
0
Prince
 
Bonjour,

est-ce que quelqu'un pourrait m'indiquer comment récupérer les donnés des différents traceroute.

Merci
0
maxidoh
 
Salut,j'ai pour projet exactement la même chose.Envoie moi ton code en entier pour que je puisse voir
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Salut.
Tu as été voir là ?
http://msdn.microsoft.com/library/en-us/vccore98/html/_crt__popen.2c_._wpopen.asp
tu peux récupérer les flux de traceroute grace à fgets apparemment.
0