1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| <?php
$OID_SW_NAME= '.iso.3.6.1.2.1.1.5.0'; // SNMPv2-MIB::sysName.0
$OID_PORT_STATUT = '.iso.3.6.1.2.1.2.2.1.8'; // IF-MIB::ifOperStatus
$OID_LAST_CHANGE = '.iso.3.6.1.2.1.2.2.1.9'; // IF-MIB::ifOperStatus
$ip_sw = "10.0.0.0";
$sec_name = "public" ;
$sec_level = "AuthPriv" ;
$auth_protocol = "MD5" ;
$auth_passphrase = "Pass" ;
$priv_protocol = "DES" ;
$priv_passphrase = "Pass" ;
$sw_name = snmp3_get($ip_sw, $sec_name, $sec_level, $auth_protocol,$auth_passphrase, $priv_protocol, $priv_passphrase,$OID_SW_NAME);
//echo "Swicth name : " . substr_replace($sw_name,"",0,7);
echo "Getting down ports for swicth " . substr($sw_name,8) . " - " . $ip_sw . "<br>\n";
$ports_statut_sw = snmp3_real_walk ($ip_sw, $sec_name, $sec_level, $auth_protocol,$auth_passphrase, $priv_protocol, $priv_passphrase,$OID_PORT_STATUT);
$count = count($ports_statut_sw);
foreach ($ports_statut_sw as $oid => $value) {
//echo 'Clef : ' . $oid . ' - Valeur : ' . $value;
$matches = array();
preg_match('([0-9])', $value, $matches);
// 1 -> up
// 2 -> down
if ($matches[0] == "2") {
$port = substr($oid ,21);
$oidport = $OID_LAST_CHANGE.".".$port;
//echo "oid : ". $oidport ."<br>";
$ch_ports_statut_sw = snmp3_get ($ip_sw, $sec_name, $sec_level, $auth_protocol,$auth_passphrase, $priv_protocol, $priv_passphrase, $oidport);
$matches = array();
preg_match('([0-9]+)', $ch_ports_statut_sw, $matches);
$time = intval($matches[0]);
//$day = round($time/8640000);
echo "port ".$port. " is down since " .$time ."<br>\n";
}
}
?> |
Partager