ping conf + get_ping.php

This commit is contained in:
Jérôme Bousquié 2018-11-30 12:08:38 +01:00
parent 7d8c047dad
commit 08c55abf15
7 changed files with 107 additions and 40 deletions

View File

@ -9,5 +9,5 @@ $auth_ldap_basedn = "DC=iut,DC=local"; // D
$auth_ldap_port = "636"; // port du serveur : 636 (ldaps) recommandé $auth_ldap_port = "636"; // port du serveur : 636 (ldaps) recommandé
$auth_ldap_attribut_identifier = "sAMAccountName"; // attribut identifiant d'un compte dans l'annuaire $auth_ldap_attribut_identifier = "sAMAccountName"; // attribut identifiant d'un compte dans l'annuaire
$auth_ldap_AD = true; // le serveur LDAP est-il un serveur AD ? $auth_ldap_AD = true; // le serveur LDAP est-il un serveur AD ?
= "Veuillez vous authentifier avec votre compte et votre mode passe Windows"; // message sur le formulaire d'authentification LDAP $auth_ldap_message = "Veuillez vous authentifier avec votre compte et votre mode passe Windows"; // message sur le formulaire d'authentification LDAP
?> ?>

7
admin/ping/winlog_ping.conf Executable file
View File

@ -0,0 +1,7 @@
# Fichier de configuration du démon ping de Winlog
# fichier généré par Winlog, ne pas modifier manuellement
fichierIN=/var/www/html/admin/ping/liste_ip.txt
fichierOUT=/var/www/html/admin/ping/liste_ping.txt
timeout=100
pathPHP=/usr/bin/php5
getPing=/var/www/html/admin/get_ping.php

View File

@ -1,42 +1,46 @@
#!/bin/bash #!/bin/bash
# Usage : winlog_ping.sh fichier_adresses_ip fichier_adresses_pinguées timeout # Usage : winlog_ping.sh fichier_ping.conf
# Ce script lit le fichier des adresses IP produit par Winlog, nom du fichier passé en paramètre. # Ce script lit le fichierIN des adresses IP produit par Winlog.
# Pour chaque adresse récupérée, il effectue un fping. # 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. # Si le fping répond, une ligne est ajoutée dans le fichierOUT. La première ligne du fichier est le timestamp de fin du ping global.
# timeout par défaut = 100ms
# Test arguments # Test arguments
if [[ ! $# -eq 3 ]]; then if [[ $# -eq 0 ]]; 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 'Erreur de paramètres : le fichier de configuration du ping doit être passé'
echo 'Usage : winlog_ping.sh fichierIN_adresses_ip fichierOUT_adresses_pinguées' echo 'Usage : winlog_start_ping.sh fichier_ping.conf'
exit 1 exit 1
fi; fi;
fichierIN=$1 # Source de la configuration et tests fichiers
fichierOUT=$2 if [ ! -e $1 ]; then
timeout=$3
if [ ! -e $fichierIN ]; then
echo 'Erreur : fichier '$1' non trouvé.' echo 'Erreur : fichier '$1' non trouvé.'
exit 1 exit 1
fi; fi;
source $1;
if [ ! -e $fichierIN ]; then
echo 'Erreur : fichier '$fichierIN' non trouvé.'
exit 1
fi;
if [ ! -e $fichierOUT ]; then if [ ! -e $fichierOUT ]; then
echo 'Erreur : fichier '$2' non trouvé.' echo 'Erreur : fichier '$fichierOUT' non trouvé.'
exit 1 exit 1
fi; fi;
# Boucle infinie : fping sur chaque adresse du fichier # 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 # 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 # fping -t$timeout -f$fichier | grep alive | cut -d ' ' -f1 : récupère les ip alive depuis fping
# Une fois le fichier rempli, on exécute admin/get_ping.php qui va récupérer le contenu du fichier dans la base Winlog
while : while :
do do
actives=`fping -t$timeout -f$fichierIN | grep alive | cut -d ' ' -f1` actives=`fping -t$timeout -f$fichierIN | grep alive | cut -d ' ' -f1`
timestamp=$(date +"%Y-%m-%d %H:%M:%S") timestamp=$(date +"%Y-%m-%d %H:%M:%S")
echo $timestamp>$fichierOUT >$fichierOUT
i=0 i=0
for ip in $actives for ip in $actives
do do
echo $ip >> $fichierOUT echo $ip >> $fichierOUT
i=$(($i+1)) i=$(($i+1))
done done
requetePing=$pathPHP' '$getPing
eval $requetePing
echo $timestamp " : " $i "réponses au ping" echo $timestamp " : " $i "réponses au ping"
done done

View File

@ -1,25 +1,29 @@
#!/bin/bash #!/bin/bash
# Usage : winlog_ping.sh fichier_adresses_ip fichier_adresses_pinguées timeout # Usage : winlog_ping.sh fichier_ping.conf
# Ce script lance le shell winlog_ping.sh en arrière plan et rend la main aussitôt. # 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. # Il arrête auparavant les éventuels processus de winlog_ping.sh.
# Test arguments # Test arguments
if [[ ! $# -eq 3 ]]; then if [[ $# -eq 0 ]]; 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 'Erreur de paramètres : le fichier de configuration du ping doit être passé'
echo 'Usage : winlog_start_ping.sh fichierIN_adresses_ip fichierOUT_adresses_pinguées' echo 'Usage : winlog_start_ping.sh fichier_ping.conf'
exit 1 exit 1
fi; fi;
fichierIN=$1 # Source de la configuration et tests fichiers
fichierOUT=$2 if [ ! -e $1 ]; then
timeout=$3
if [ ! -e $fichierIN ]; then
echo 'Erreur : fichier '$1' non trouvé.' echo 'Erreur : fichier '$1' non trouvé.'
exit 1 exit 1
fi; fi;
if [ ! -e $fichierOUT ]; then source $1;
echo 'Erreur : fichier '$2' non trouvé.' if [ ! -e $fichierIN ]; then
echo 'Erreur : fichier '$fichierIN' non trouvé.'
exit 1 exit 1
fi; fi;
if [ ! -e $fichierOUT ]; then
echo 'Erreur : fichier '$fichierOUT' non trouvé.'
exit 1
fi;
# Arrêt des éventuels processus actifs de winlog_ping # Arrêt des éventuels processus actifs de winlog_ping
for proc in `ps -ej | grep winlog_ping | grep -v grep | cut -d ' ' -f1` for proc in `ps -ej | grep winlog_ping | grep -v grep | cut -d ' ' -f1`
@ -28,4 +32,4 @@ do
done done
# Lancement de winlog_ping.sh en arrière plan # Lancement de winlog_ping.sh en arrière plan
/var/www/html/admin/ping/winlog_ping.sh $fichierIN $fichierOUT $timeout & /var/www/html/admin/ping/winlog_ping.sh $1 &

View File

@ -28,6 +28,33 @@ $req_purge_salle = "TRUNCATE salles";
$ldap_con = ldap_connect($ldap_host, $ldap_port); $ldap_con = ldap_connect($ldap_host, $ldap_port);
$ldap_auth = ldap_bind($ldap_con, $ldap_rdn, $ldap_passwd); $ldap_auth = ldap_bind($ldap_con, $ldap_rdn, $ldap_passwd);
// Fonction de création du fichier de configuration du démon ping
Function Configuration_ping() {
global $winlog_ping_conf;
global $fichier_liste_ip;
global $fichier_liste_ping;
global $ping_timeout;
global $php_path;
global $winlog_get_ping;
$fichier = fopen($winlog_ping_conf, "w");
if ($fichier) {
$cr = "\n";
$lignes = [
"# Fichier de configuration du démon ping de Winlog".$cr,
"# fichier généré par Winlog, ne pas modifier manuellement".$cr,
"fichierIN=".$fichier_liste_ip.$cr,
"fichierOUT=".$fichier_liste_ping.$cr,
"timeout=".$ping_timeout.$cr,
"pathPHP=".$php_path.$cr,
"getPing=".$winlog_get_ping.$cr
];
foreach($lignes as $ligne) {
fwrite($fichier, $ligne);
}
fclose($fichier);
}
};
// Fonction d'écriture des adresses IP des machines dans le fichier liste_ip // Fonction d'écriture des adresses IP des machines dans le fichier liste_ip
Function Liste_ip_fichier(&$db) { Function Liste_ip_fichier(&$db) {
global $fichier_liste_ip; global $fichier_liste_ip;
@ -45,9 +72,7 @@ Function Liste_ip_fichier(&$db) {
// Fonction de lancement du démon de ping // Fonction de lancement du démon de ping
Function Lance_demon_ping() { Function Lance_demon_ping() {
global $fichier_liste_ip; global $winlog_ping_conf;
global $fichier_liste_ping;
global $ping_timeout;
global $winlog_start_ping; global $winlog_start_ping;
global $winlog_ping_error; global $winlog_ping_error;
global $winlog_ping_debug; global $winlog_ping_debug;
@ -56,7 +81,7 @@ Function Lance_demon_ping() {
$redirect = ' >> '. $winlog_ping_error; $redirect = ' >> '. $winlog_ping_error;
} }
$command = $winlog_start_ping . ' ' . $fichier_liste_ip . ' ' . $fichier_liste_ping . ' ' . $ping_timeout . $redirect . ' 2>&1'; $command = $winlog_start_ping . ' ' . $winlog_ping_conf . $redirect . ' 2>&1';
//echo $command; //echo $command;
exec($command); exec($command);
}; };
@ -126,7 +151,8 @@ foreach ($ldap_machines as $ldap_branche) {
// Ajout des adresses IP déjà collectées dans le fichier des adresses IP et lancement du démon de ping // Ajout des adresses IP déjà collectées dans le fichier des adresses IP et lancement du démon de ping
// =================================================================================================== // ===================================================================================================
if ($winlog_start_ping != "") { if ($mode_ping) {
Configuration_ping();
Liste_ip_fichier($db); Liste_ip_fichier($db);
Lance_demon_ping(); Lance_demon_ping();
} }

View File

@ -1,6 +1,6 @@
<?php <?php
// Version // Version
$version = "1.3.0"; $version = "1.6.0";
// URL administration de Winlog // URL administration de Winlog
$winlog_url = "https://winlog.iut-rodez.fr/admin/"; $winlog_url = "https://winlog.iut-rodez.fr/admin/";
// URL serveur Winlog : URL sur laquelle les requêtes des PC clients arrivent // URL serveur Winlog : URL sur laquelle les requêtes des PC clients arrivent
@ -139,6 +139,11 @@ $trombino_extension_fichier = ".jpg";
// Ping : s'appuie sur la commande système fping // Ping : s'appuie sur la commande système fping
// NOTE : tous les chemins doivent être absolus ! l'utilisateur apache www-data ne connait pas forcément l'environnement. // NOTE : tous les chemins doivent être absolus ! l'utilisateur apache www-data ne connait pas forcément l'environnement.
// Le démon de ping doit-il être activé. Mettre à false pour désactiver.
$mode_ping = true;
// fichier de configuration bash du démon de ping
$winlog_ping_conf = "/var/www/html/admin/ping/winlog_ping.conf";
// fichier de la liste d'adresses IP à pinger (fichierIN), doit être accessible en lecture/écriture // fichier de la liste d'adresses IP à pinger (fichierIN), doit être accessible en lecture/écriture
$fichier_liste_ip = "/var/www/html/admin/ping/liste_ip.txt"; $fichier_liste_ip = "/var/www/html/admin/ping/liste_ip.txt";
// ficher de la liste des adresses ayant répondu au ping (fichierOUT), doit être accessible en lecture/écriture // ficher de la liste des adresses ayant répondu au ping (fichierOUT), doit être accessible en lecture/écriture
@ -152,6 +157,10 @@ $winlog_start_ping = "/var/www/html/admin/ping/winlog_start_ping.sh";
$winlog_ping = "/var/www/html/admin/ping/winlog_ping.sh"; $winlog_ping = "/var/www/html/admin/ping/winlog_ping.sh";
// fichier de log // fichier de log
$winlog_ping_error = "/var/www/html/admin/ping/ping_error.log"; $winlog_ping_error = "/var/www/html/admin/ping/ping_error.log";
// mode debug : mettre à true pour voir les erreur dans ŵinlog_ping_error.log // mode debug : mettre à true pour voir les erreurs dans ŵinlog_ping_error.log
$winlog_ping_debug = false; $winlog_ping_debug = false;
// chemin vers php : où se trouve le moteur php sur le système
$php_path = "/usr/bin/php5";
// chemin vers le script winlog de collecte des résultats du ping
$winlog_get_ping = "/var/www/html/admin/get_ping.php";
?> ?>

View File

@ -3,7 +3,7 @@
-- http://www.phpmyadmin.net -- http://www.phpmyadmin.net
-- --
-- Client : localhost -- Client : localhost
-- Généré le : Mar 13 Décembre 2016 à 15:35 -- Généré le : Ven 30 Novembre 2018 à 10:26
-- Version du serveur : 5.5.53-0+deb8u1 -- Version du serveur : 5.5.53-0+deb8u1
-- Version de PHP : 5.6.27-0+deb8u1 -- Version de PHP : 5.6.27-0+deb8u1
@ -32,7 +32,7 @@ CREATE TABLE IF NOT EXISTS `comptes` (
`prenom` varchar(25) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, `prenom` varchar(25) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`nom` varchar(30) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, `nom` varchar(30) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`groupe` varchar(25) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL `groupe` varchar(25) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL
) ENGINE=MyISAM AUTO_INCREMENT=890 DEFAULT CHARSET=utf8; ) ENGINE=MyISAM AUTO_INCREMENT=928 DEFAULT CHARSET=utf8;
-- -------------------------------------------------------- -- --------------------------------------------------------
@ -49,7 +49,7 @@ CREATE TABLE IF NOT EXISTS `connexions` (
`debut_con` timestamp NULL DEFAULT '0000-00-00 00:00:00', `debut_con` timestamp NULL DEFAULT '0000-00-00 00:00:00',
`close` tinyint(1) NOT NULL DEFAULT '1', `close` tinyint(1) NOT NULL DEFAULT '1',
`archivable` tinyint(1) NOT NULL DEFAULT '0' `archivable` tinyint(1) NOT NULL DEFAULT '0'
) ENGINE=MyISAM AUTO_INCREMENT=38044 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; ) ENGINE=MyISAM AUTO_INCREMENT=193000 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
-- -------------------------------------------------------- -- --------------------------------------------------------
@ -77,6 +77,17 @@ CREATE TABLE IF NOT EXISTS `machines` (
-- -------------------------------------------------------- -- --------------------------------------------------------
--
-- Structure de la table `ping`
--
CREATE TABLE IF NOT EXISTS `ping` (
`machine_id` varchar(15) COLLATE utf8_unicode_ci NOT NULL,
`ping_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='table des réponses au ping de chaque machine';
-- --------------------------------------------------------
-- --
-- Structure de la table `proxy` -- Structure de la table `proxy`
-- --
@ -127,7 +138,7 @@ CREATE TABLE IF NOT EXISTS `wifi` (
`wifi_browser` varchar(160) COLLATE utf8_unicode_ci NOT NULL, `wifi_browser` varchar(160) COLLATE utf8_unicode_ci NOT NULL,
`wifi_deb_conn` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `wifi_deb_conn` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`close` tinyint(4) NOT NULL DEFAULT '0' `close` tinyint(4) NOT NULL DEFAULT '0'
) ENGINE=MyISAM AUTO_INCREMENT=316 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; ) ENGINE=MyISAM AUTO_INCREMENT=96340 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
-- --
-- Index pour les tables exportées -- Index pour les tables exportées
@ -151,6 +162,12 @@ ALTER TABLE `connexions`
ALTER TABLE `machines` ALTER TABLE `machines`
ADD PRIMARY KEY (`machine_id`); ADD PRIMARY KEY (`machine_id`);
--
-- Index pour la table `ping`
--
ALTER TABLE `ping`
ADD PRIMARY KEY (`machine_id`);
-- --
-- Index pour la table `salles` -- Index pour la table `salles`
-- --
@ -177,17 +194,17 @@ ALTER TABLE `wifi`
-- AUTO_INCREMENT pour la table `comptes` -- AUTO_INCREMENT pour la table `comptes`
-- --
ALTER TABLE `comptes` ALTER TABLE `comptes`
MODIFY `compte_id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=890; MODIFY `compte_id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=928;
-- --
-- AUTO_INCREMENT pour la table `connexions` -- AUTO_INCREMENT pour la table `connexions`
-- --
ALTER TABLE `connexions` ALTER TABLE `connexions`
MODIFY `con_id` bigint(20) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=38044; MODIFY `con_id` bigint(20) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=193000;
-- --
-- AUTO_INCREMENT pour la table `wifi` -- AUTO_INCREMENT pour la table `wifi`
-- --
ALTER TABLE `wifi` ALTER TABLE `wifi`
MODIFY `wifi_id` bigint(20) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=316; MODIFY `wifi_id` bigint(20) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=96340;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;