Bonsoir

Voilà actuellement j'ai réussi à coder un petit truc qui me remonte les port down sur un switch et cela depuis combien de temps (grâce notamment à la fonction snmp).

Le problème c'est qu'à l'heure actuelle, ce programme marche pour une ip donnée.

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
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";
		}
	}
?>

Le but final est de traiter toute une liste d'adresses ip présentes dans un fichier csv.

Comment procéder afin d'arriver à ce résultat ?
Faut-il créer des fonction ? J'ai essayé de commencer cela mais sans succès.
Comment restructurer mon code ?

Merci.