elmarokinho pourrais tu m'envoyer ton programme qui a partir d'un adresse mac ou d'une adresse IP tu determine sur quel port est connecté la machine.
Avec des explications si possible
j'ai trouvé ce programme
<?php
class Commutateur{
// Constantes MIB Snmp
private $OID_MAC = '.iso.3.6.1.2.1.17.4.3.1.1';
private $OID_PORT = '.iso.3.6.1.2.1.17.4.3.1.2';
private $OID_PORT_CHAINAGE = '.iso.3.6.1.4.1.45.1.6.13.2.1.1.2';
private $OID_IP_CHAINAGE = '.iso.3.6.1.4.1.45.1.6.13.2.1.1.3';
private $OID_NOM = '.iso.3.6.1.2.1.1.5.0';
private $OID_LOCALISATION = '.iso.3.6.1.2.1.1.6.0';
private $ip;
private $communaute;
private $nom;
private $localisation;
public function Commutateur($ip_root,$communaute){
$this->ip = $ip_root;
$this->communaute = $communaute;
$this->nom = snmpget($this->ip,$this->communaute,$this->OID_NOM);
$this->localisation = snmpget($this->ip,$this->communaute,$this->OID_LOCALISATION);
}
public function getIp(){
return $this->ip;
}
public function getNom(){
return $this->nom;
}
public function getLocalisation(){
return $this->localisation;
}
// Recherche @Mac sur le switch
// Retourne le n° de port ou False
public function findMac($mac_cherche){
$mac_cherche=strtoupper($mac_cherche);
$macs = snmprealwalk($this->ip, $this->communaute, $this->OID_MAC); //Récupère MAC connues du switch par SNMP
//Boucle sur chaque adresse MAC
foreach($macs as $cle => $valeur){
$mac = str_replace(" ",":",substr($valeur,6,17)); // Suppression HEX et espaces
if($mac == $mac_cherche){ // Filtre sur MAC recherchée
$oid = $this->OID_PORT.".".substr($cle,26); // Construit OID du port contenant la MAC recherchée
$ports = snmprealwalk($this->ip, $this->communaute, $this->OID_PORT); // Récupère les ports du switch par SNMP
// Boucle sur chaque port
foreach($ports as $cle => $port){
if($cle == $oid){ // Filtre sur port ayant l'OID recherché
return $port; // Port trouvé pour l'adresse MAC, on retourne le N° port
}
}
}
}
return false; // Port non trouvé : retourne False.
}
// Retourne le switch suivant à partir du N° de port
// Retourne @Ip du switch suivant ou False si port non chainé
public function switchSuivant($chainage){
// Récupération port chainé du switch
$snmp=snmprealwalk($this->ip, $this->communaute, $this->OID_PORT_CHAINAGE);
foreach($snmp as $cle => $port){
if($port == $chainage){
$oid_next = rtrim(substr($cle,strlen($this->OID_PORT_CHAINAGE)));
// Récupération IP des switches suivants
$snmp=snmprealwalk($this->ip, $this->communaute, $this->OID_IP_CHAINAGE);
foreach($snmp as $cle => $ip){
$ip_next = rtrim(substr($ip,strlen('IpAddress: ')%