IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Récupération table arp d'un routeur


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 9
    Points : 5
    Points
    5
    Par défaut Récupération table arp d'un routeur
    Bonjour à tous,

    Je dois pour un projet de stage récupérer la table ARP d'un routeur de mon entreprise, via le protocole SNMP.

    Jusque là aucun soucis, les fonctions marchent parfaitement, l'affichage est bon aussi à part pour une chose...
    Un exemple vaut mieux qu'un long discours alors voici ce que m'affiche le résultat de mon code :

    IP MAC
    31.10.19.23 STRING: 0:0:48:3F:ED:E9
    172.16.0.28 STRING: 0:0:50:14:8A:9E
    31.10.64.1 STRING: 0:0:5E:0:1:10
    .... ....
    Les adresses IP sont bonnes, les adresses MAC le sont presque quant à elles.
    Là où il devrait y avoir deux "0" de suite il n'y en a qu'un seul, et lorsqu'un chiffre est tout seul, cela signifie qu'il devrait y avoir un "0" devant.

    Ainsi la 3ème ligne devrait donc avoir pour adresse mac "00:00:5E:00:01:10".

    Mon problème est de savoir pourquoi mon code affiche les adresses mac sous cette forme et pas dans la forme "normale".

    Voici le code avec lequel j'obtiens mon tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    // SNMP SUR ROUTEUR POUR RECUPERER LA TABLE ARP
    	snmp_set_oid_output_format(SNMP_OID_OUTPUT_NUMERIC);
     
    	$OID = '.1.3.6.1.2.1.4.22.1.2';
    	$X = snmprealwalk('20.12.10.1', 'public', $OID);
    	foreach($X as $key => $value) {
    		$IP = substr($key, strlen($OID)+1);
    		$Y[$IP]=$value;		
    	}
    	unset($X);
    	asort($Y);
     
    	echo '<table border="1"> 
    			<th> IP </th>
    			<th> MAC </th> ';
     
    	foreach($Y as $key => $value) {
    		echo '<tr> 
    				<td> ' . substr($key, 5) . ' </td> 
    				<td> ' . strtoupper($value) . ' </td> 
    			  </tr>';
    	}
    Merci de votre aide.

  2. #2
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    il est ou le problème?

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    J'aimerai que l'affichage soit de la forme "classique", sans qu'il supprime un 0, même s'il ne sert à rien.

    Par exemple avoir 00:00:5E:00:01:10 au lieu de 0:0:5E:0:1:10, comme je peux l'obtenir avec un snmpwalk sous linux.

    Merci

  4. #4
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    dans la lib ya une fonction snmp_set_oid_output_format(). est-ce ce que tu as testé?

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Oui, c'est sur la 2ème ligne de mon code

    Peut être que c'est mal utilisé mais il me semble que non

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Hop problème résolu, j'ai créé une fonction qui fait tout le boulot :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function parseMacAddr($T) {
            $tok = strtok($T,":");
            while ($tok !== false) {
                $oct=$tok;
                settype($oct,"string");
                if (strlen($oct)==1) $oct = "0" . $oct;
                $T = $T . $oct . ":";
                $tok = strtok(":");
            }
            $T = substr($T, 0, strlen($T)-1);
            return $T;
    	}

  7. #7
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    si ca t'intéresse on peut le faire en une ligne ^^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <?php
    function formatMacAddress($mac) {
    	return implode(':', 
    		array_map( 
    			create_function('$a', 'return sprintf("%02s",$a);'), 
    			explode(':', $mac)
    		)
    	);
    }
     
    // test
    $MacAddressList=array(
    '0:0:48:3F:ED:E9',
    '0:0:50:14:8A:9E',
    '0:0:5E:0:1:10'
    );
     
    foreach ($MacAddressList as $value) {
    	echo $value.' => '.formatMacAddress($value).'<br>';
    }
    ?>
    Affiche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    0:0:48:3F:ED:E9 => 00:00:48:3F:ED:E9
    0:0:50:14:8A:9E => 00:00:50:14:8A:9E
    0:0:5E:0:1:10 => 00:00:5E:00:01:10

  8. #8
    Nouveau membre du Club
    Inscrit en
    Septembre 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 30
    Points : 28
    Points
    28
    Par défaut Code
    Bonjour,

    L'intégralité de ton code m'intéresse énormément. Est-ce qu'il serait possible de l'intégrer à la discussion ou de me l'envoyer par mail.

    Ca me ferait gagner un temps précieux.

    merci de ton aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. table ARP en java
    Par asrekik dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 08/10/2007, 17h57
  2. [ Noob - Perl Reseau ] Script perl qui recupere les tables ARP des switches Cisco
    Par oneal42 dans le forum Programmation et administration système
    Réponses: 1
    Dernier message: 04/09/2007, 11h11
  3. Réponses: 4
    Dernier message: 02/08/2006, 16h07
  4. table arp sur un switch niveau 3
    Par suya95 dans le forum Développement
    Réponses: 5
    Dernier message: 06/06/2006, 16h24
  5. interroger la table arp d'un serveur dhcp
    Par le y@m's dans le forum Développement
    Réponses: 6
    Dernier message: 17/03/2005, 08h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo