''"; $res = db_query($db, $req_recup_ip); while ($ip = db_fetch_row($res)) { fwrite($fichier, $ip[0]."\n"); } db_free($res); fclose($fichier); } }; // Fonction de lancement du démon de ping Function Lance_demon_ping() { global $fichier_liste_ip; global $fichier_liste_ping; global $ping_timeout; global $winlog_start_ping; global $winlog_ping_error; global $winlog_ping_debug; $redirect = ' > /dev/null'; if ($winlog_ping_debug) { $redirect = ' >> '. $winlog_ping_error; } $command = $winlog_start_ping . ' ' . $fichier_liste_ip . ' ' . $fichier_liste_ping . ' ' . $ping_timeout . $redirect . ' 2>&1'; //echo $command; exec($command); }; // Fonction d'insertion des machines dans la base de données à partir des base, filtre et attributs LDAP // $salles est explicitement passé par référence // retourne le nombre d'enregistrements ajoutés dans la base function Insere_machines(&$ldap_con, $ldap_base, $ldap_filtre, &$ldap_attr, &$exclusion, &$db, &$salles, $update) { $res = ldap_search($ldap_con, $ldap_base, $ldap_filtre, $ldap_attr); $entry = ldap_get_entries($ldap_con, $res); $count = 0; for ($i = 0; $i < $entry["count"]; $i++) { $machine_id = $entry[$i]["cn"][0]; $dn_tab = ldap_explode_dn($entry[$i]["dn"], 1); if ( in_array($dn_tab, $exclusion) ) { continue; } $nom_salle = SalleDeMachine($machine_id, $dn_tab[1]); // appel custom, le nom de la salle dans laquelle elle se trouve est le 2° élément du DN d'une machine array_push($salles, $nom_salle); // tableau des salles construit à la volée $os = ""; $os_sp = ""; $os_version = ""; if (array_key_exists("operatingsystem", $entry[$i])) { $os = db_escape_string($db, $entry[$i]["operatingsystem"][0]); } if (array_key_exists("operatingsystemservicepack", $entry[$i])) { $os_sp = db_escape_string($db, $entry[$i]["operatingsystemservicepack"][0]); } if (array_key_exists("operatingsystemversion", $entry[$i])) { $os_version = db_escape_string($db, $entry[$i]["operatingsystemversion"][0]); } // requête permettant de mettre à jour les adresses IP à partir des connexions ouvertes $req_adresses = "UPDATE machines INNER JOIN connexions ON machines.machine_id = connexions.hote SET machines.adresse_ip = connexions.ip WHERE connexions.close=0;"; $req_machine_insert = "INSERT INTO machines (machine_id, salle, os, os_sp, os_version) VALUES ('{$machine_id}', '{$nom_salle}', '{$os}', '{$os_sp}', '{$os_version}')"; $req_machine_update = "INSERT INTO machines (machine_id, salle, os, os_sp, os_version) VALUES ('{$machine_id}', '{$nom_salle}', '{$os}', '{$os_sp}', '{$os_version}') ON DUPLICATE KEY UPDATE salle = '{$nom_salle}', os = '{$os}', os_sp = '{$os_sp}', os_version = '{$os_version}'"; $req_machine = ($update) ? $req_machine_update : $req_machine_insert; db_query($db, $req_machine); db_query($db, $req_adresses); $count = $count + 1; } return $count; }; // Insertion des machines // ====================== $salles = array(); // tableau des salles contenant des machines if (!$update) { db_query($db, $req_purge_machine); } // boucle sur chaque branche déclarée dans $ldap_machines $nb_total = 0; $nb = 0; foreach ($ldap_machines as $ldap_branche) { $ldap_base = $ldap_branche["base"]; $ldap_filtre = $ldap_branche["filtre"]; $ldap_attr = $ldap_branche["attr"]; $nb = Insere_machines($ldap_con, $ldap_base, $ldap_filtre, $ldap_attr, $OU_machines_exclusion, $db, $salles, $update); $nb_total = $nb_total + $nb; } // Ajout des adresses IP déjà collectées dans le fichier des adresses IP et lancement du démon de ping // =================================================================================================== Liste_ip_fichier($db); Lance_demon_ping(); // Insertion des salles à partir du tableau $salles remplis par Insere_machines() // ============================================================================== $salles_uniques = array_unique($salles); // suppression des doublons dans le tableau des salles db_query($db, $req_purge_salle); $nb_salles = 0; foreach($salles_uniques as $s) { $req_salle = "INSERT INTO salles (salle_id) VALUES ('{$s}')"; db_query($db, $req_salle); $nb_salles = $nb_salles + 1; } // fermeture ldap ldap_close($ldap_con); ?> Winlog

WINLOG

Récupération des machines et des salles

Ce traitement vient de récupérer les machines et les salles depuis le serveur Active Directory.
Les informations relatives aux machines et aux salles (noms des salles ou des machines, adresses IP, etc) préalablement dans la base Winlog viennent d'être effacées.

Nombre de machines chargées dans la base :
Nombre de salles chargées dans la base :

Le démon de ping des machines vient d'être relancé.

Retour menu principal