diff --git a/admin/configuration_actuelle.php b/admin/configuration_actuelle.php new file mode 100644 index 0000000..c567a07 --- /dev/null +++ b/admin/configuration_actuelle.php @@ -0,0 +1,81 @@ +connect_errno) { + $test_db = "Échec de connexion à la base : " . $conn->connect_error; +} + +// accès au fichier ping +$fichier = fopen($fichier_ping, "r+"); +$test_fichier_ping = "Échec, fichier non accessible"; +if ($fichier) { + $test_fichier_ping = "OK"; +} + +$username = Username(); +$profil = Profil($username); +FiltreProfil($profil); +$role = $roles[$profil]; + +?> + + +
+WINLOG-R
+compte :
rôle :
Mode d'authentification activé :
+URL d'administration de Winlog :
+URL de collecte des requêtes des PC du parc :
+Code partagé dans la requête :
+Nom ou adresse du serveur AD :
+Port du serveur AD :
+DN d'authentification LDAP sur le serveur AD :
+ +Test connexion LDAP :
+Base de recherche AD des salles informatiques :
+Base de recherche AD des PC des personnels :
+Base de recherche AD des personnels/enseignants :
+Base de recherche AD des étudiants :
+Les OU à exclure de la recherche des comptes :
+Les OU à exclure de la recherche des machines :
+Test de connexion à la base :
+ à compléter ... +Fichier liste des adresses IP :
+Test accès fichier :
+ + + + + \ No newline at end of file diff --git a/admin/ping/liste_ip.txt b/admin/ping/liste_ip.txt new file mode 100755 index 0000000..d70ed26 --- /dev/null +++ b/admin/ping/liste_ip.txt @@ -0,0 +1,180 @@ +10.2.14.15 +10.2.14.20 +10.2.14.21 +10.2.14.25 +10.2.14.11 +10.2.13.12 +10.2.13.39 +10.2.13.16 +10.2.13.15 +10.2.13.19 +10.2.13.17 +10.2.13.18 +10.2.13.14 +10.2.13.13 +10.2.13.26 +10.2.13.21 +10.2.13.22 +10.2.13.25 +10.2.13.24 +10.2.13.23 +10.2.13.27 +10.2.13.28 +10.2.13.30 +10.2.13.29 +10.2.13.31 +10.2.13.32 +10.2.13.38 +10.2.13.37 +10.2.13.36 +10.2.13.35 +10.2.13.33 +10.2.13.20 +10.2.8.12 +10.2.8.13 +10.2.8.14 +10.2.8.17 +10.2.8.19 +10.2.8.18 +10.2.8.20 +10.2.8.21 +10.2.8.22 +10.2.8.24 +10.2.8.26 +10.2.8.25 +10.2.8.29 +10.2.8.30 +10.2.8.31 +10.2.8.32 +10.2.8.33 +10.2.8.34 +10.2.8.37 +10.2.8.38 +10.2.8.42 +10.2.7.18 +10.2.7.21 +10.2.7.19 +10.2.7.23 +10.2.7.34 +10.2.7.37 +10.2.7.36 +10.2.7.24 +10.2.7.22 +10.2.7.26 +10.2.7.35 +10.2.7.38 +10.2.7.30 +10.2.7.33 +10.2.7.29 +10.2.7.32 +10.2.7.20 +10.2.7.31 +10.2.7.16 +10.2.7.17 +10.2.11.11 +10.2.11.26 +10.2.11.25 +10.2.11.24 +10.2.11.18 +10.2.11.19 +10.2.11.20 +10.2.11.21 +10.2.11.33 +10.2.11.34 +10.2.11.40 +10.2.13.11 +10.2.3.30 +10.2.3.29 +10.2.21.21 +10.2.8.11 +10.2.7.39 +10.2.6.38 +10.2.6.37 +10.2.6.39 +10.2.6.31 +10.2.6.34 +10.2.6.35 +10.2.6.27 +10.2.6.32 +10.2.6.21 +10.2.6.28 +10.2.6.22 +10.2.6.26 +10.2.6.23 +10.2.6.20 +10.2.6.18 +10.2.6.25 +10.2.6.17 +10.2.6.19 +10.2.6.11 +10.2.6.14 +10.2.6.16 +10.2.6.15 +10.2.6.24 +10.2.6.29 +10.2.6.36 +10.2.6.13 +10.2.10.39 +10.2.21.11 +10.2.21.40 +10.2.21.14 +10.2.21.15 +10.2.21.16 +10.2.21.17 +10.2.21.20 +10.2.21.29 +10.2.21.28 +10.2.21.27 +10.2.21.26 +10.2.21.25 +10.2.21.24 +10.2.21.23 +10.2.21.22 +10.2.21.37 +10.2.21.36 +10.2.21.35 +10.2.21.34 +10.2.21.33 +10.2.21.32 +10.2.21.31 +10.2.21.30 +10.2.21.18 +10.2.21.19 +10.2.1.38 +10.2.1.37 +10.2.1.39 +10.2.1.16 +10.2.1.17 +10.2.1.15 +10.2.1.18 +10.2.1.21 +10.2.1.20 +10.2.1.19 +10.2.1.12 +10.2.1.14 +10.2.1.26 +10.2.1.22 +10.2.1.25 +10.2.1.11 +10.2.1.24 +10.2.1.23 +10.2.1.33 +10.2.1.28 +10.2.1.32 +10.2.1.34 +10.2.1.29 +10.2.1.13 +10.2.17.18 +192.168.0.238 +192.168.0.235 +192.168.0.63 +192.168.0.174 +192.168.0.199 +192.168.0.47 +192.168.0.48 +192.168.0.119 +192.168.0.120 +192.168.0.135 +192.168.0.132 +192.168.0.123 +192.168.0.20 diff --git a/admin/ping/liste_ping.txt b/admin/ping/liste_ping.txt new file mode 100755 index 0000000..3d27a0b --- /dev/null +++ b/admin/ping/liste_ping.txt @@ -0,0 +1,37 @@ +2018-11-29 12:19:23 +10.2.14.15 +10.2.14.20 +10.2.14.21 +10.2.14.25 +10.2.14.11 +10.2.1.38 +10.2.1.37 +10.2.1.39 +10.2.1.17 +10.2.1.15 +10.2.1.18 +10.2.1.21 +10.2.1.20 +10.2.1.19 +10.2.1.12 +10.2.1.14 +10.2.1.26 +10.2.1.22 +10.2.1.25 +10.2.1.11 +10.2.1.24 +10.2.1.23 +10.2.1.33 +10.2.1.28 +10.2.1.32 +10.2.1.34 +10.2.1.29 +10.2.1.13 +192.168.0.174 +192.168.0.199 +192.168.0.47 +192.168.0.48 +192.168.0.135 +192.168.0.132 +192.168.0.123 +10.2.6.36 diff --git a/admin/ping/ping_error.log b/admin/ping/ping_error.log new file mode 100755 index 0000000..e69de29 diff --git a/admin/ping/winlog_ping.sh b/admin/ping/winlog_ping.sh new file mode 100755 index 0000000..d9b02f7 --- /dev/null +++ b/admin/ping/winlog_ping.sh @@ -0,0 +1,42 @@ +#!/bin/bash +# Usage : winlog_ping.sh fichier_adresses_ip fichier_adresses_pinguées timeout +# Ce script lit le fichier des adresses IP produit par Winlog, nom du fichier passé en paramètre. +# Pour chaque adresse récupérée, il effectue un fping. +# Si le fping répond, un timestamp est mis à jour sur la ligne de l'adresse IP dans le fichier. +# timeout par défaut = 100ms + +# Test arguments +if [[ ! $# -eq 3 ]]; then + echo 'Erreur de paramètres : les noms des fichiers de la liste des adresses IP et des adresses ayant répondu au ping et la durée du timeout du ping en ms.' + echo 'Usage : winlog_ping.sh fichierIN_adresses_ip fichierOUT_adresses_pinguées' + exit 1 +fi; +fichierIN=$1 +fichierOUT=$2 +timeout=$3 +if [ ! -e $fichierIN ]; then + echo 'Erreur : fichier '$1' non trouvé.' + exit 1 +fi; +if [ ! -e $fichierOUT ]; then + echo 'Erreur : fichier '$2' non trouvé.' + exit 1 +fi; + +# Boucle infinie : fping sur chaque adresse du fichier +# La première ligne écrite dans le fichier est le timestamp +# Si réponse ping, alors ajout de l'adresse dans le fichier OUT +# fping -t$timeout -f$fichier | grep alive | cut -d ' ' -f1 : récupère les ip alive depuis fping +while : +do + actives=`fping -t$timeout -f$fichierIN | grep alive | cut -d ' ' -f1` + timestamp=$(date +"%Y-%m-%d %H:%M:%S") + echo $timestamp>$fichierOUT + i=0 + for ip in $actives + do + echo $ip >> $fichierOUT + i=$(($i+1)) + done + echo $timestamp " : " $i "réponses au ping" +done \ No newline at end of file diff --git a/admin/ping/winlog_start_ping.sh b/admin/ping/winlog_start_ping.sh new file mode 100755 index 0000000..46b80aa --- /dev/null +++ b/admin/ping/winlog_start_ping.sh @@ -0,0 +1,31 @@ +#!/bin/bash +# Usage : winlog_ping.sh fichier_adresses_ip fichier_adresses_pinguées timeout +# Ce script lance le shell winlog_ping.sh en arrière plan et rend la main aussitôt. +# Il arrête auparavant les éventuels processus de winlog_ping.sh. + +# Test arguments +if [[ ! $# -eq 3 ]]; then + echo 'Erreur de paramètres : les noms des fichiers de la liste des adresses IP et des adresses ayant répondu au ping et la durée du timeout du ping en ms.' + echo 'Usage : winlog_start_ping.sh fichierIN_adresses_ip fichierOUT_adresses_pinguées' + exit 1 +fi; +fichierIN=$1 +fichierOUT=$2 +timeout=$3 +if [ ! -e $fichierIN ]; then + echo 'Erreur : fichier '$1' non trouvé.' + exit 1 +fi; +if [ ! -e $fichierOUT ]; then + echo 'Erreur : fichier '$2' non trouvé.' + exit 1 +fi; + +# Arrêt des éventuels processus actifs de winlog_ping +for proc in `ps -ej | grep winlog_ping | grep -v grep | cut -d ' ' -f1` +do + kill -9 $proc +done + +# Lancement de winlog_ping.sh en arrière plan +/var/www/html/admin/ping/winlog_ping.sh $fichierIN $fichierOUT $timeout & \ No newline at end of file diff --git a/admin/recup_salles.php b/admin/recup_salles.php index fbdf7f9..caebecf 100644 --- a/admin/recup_salles.php +++ b/admin/recup_salles.php @@ -30,8 +30,8 @@ $ldap_auth = ldap_bind($ldap_con, $ldap_rdn, $ldap_passwd); // Fonction d'écriture des adresses IP des machines dans le fichier liste_ip Function Liste_ip_fichier(&$db) { - global $fichier_ping; - $fichier = fopen($fichier_ping, "w"); + global $fichier_liste_ip; + $fichier = fopen($fichier_liste_ip, "w"); if ($fichier) { $req_recup_ip = "SELECT DISTINCT adresse_ip FROM machines WHERE adresse_ip <>''"; $res = db_query($db, $req_recup_ip); @@ -41,7 +41,25 @@ Function Liste_ip_fichier(&$db) { 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 @@ -73,10 +91,14 @@ function Insere_machines(&$ldap_con, $ldap_base, $ldap_filtre, &$ldap_attr, &$ex $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; @@ -102,8 +124,10 @@ foreach ($ldap_machines as $ldap_branche) { $nb_total = $nb_total + $nb; } -// ajout des adresses IP déjà collectée dans le fichier des adresses IP +// 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() // ============================================================================== @@ -130,9 +154,12 @@ ldap_close($ldap_con);WINLOG
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é.