+
+
\ 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
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.
+
+ 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é.