stop ping

This commit is contained in:
Jérôme Bousquié 2018-12-05 10:31:22 +01:00
parent 5a080696ad
commit 429c33df9e
9 changed files with 110 additions and 12 deletions

View File

@ -5,7 +5,7 @@ Les connexions sont archivées dans une base de données et peuvent faire l'obje
Voir la [documentation](https://github.com/jbousquie/winlog/wiki)
version : 1.5.0 _([Change Log](https://github.com/jbousquie/winlog/wiki/Change-Log))_
version : 1.6 _([Change Log](https://github.com/jbousquie/winlog/wiki/Change-Log))_
note : depuis la version 1.4.0 proposant la fonctionnalité de démarrer un script sur une machine distante, Winlog se nomme Winlog-R (remote) pour le différentier des versions précédentes.
*Licence [CeCILL-B](http://www.cecill.info/)*

19
admin/get_ping.php Normal file
View File

@ -0,0 +1,19 @@
<?php
// Mise à jour de la table ping depuis le fichier produit par le démon ping
// Ce script est appelé depuis ping/winlog_ping.sh
include_once('winlog_admin_conf.php');
include_once('db_access.php');
$fichier = fopen($fichier_liste_ping, "r");
if ($fichier) {
$db = db_connect();
while (!feof($fichier)) {
$ip = rtrim(fgets($fichier));
if ($ip != '') {
$req_ping_update = "INSERT INTO ping (machine_id) SELECT machine_id FROM machines WHERE machines.adresse_ip = '{$ip}' ON DUPLICATE KEY UPDATE ping_timestamp = CURRENT_TIMESTAMP;";
db_query($db, $req_ping_update);
}
}
fclose($fichier);
}
?>

View File

@ -80,9 +80,10 @@ if ($profil == $niveaux[$roles[3]]) { ?>
<div class="menu"><a href="configuration_actuelle.php">Configuration actuelle de Winlog</a> : affiche la configuration en cours dans <i>winlog_admin_conf.php</i>.</div>
<div class="menu"><a href="scripts_clients.php">Génération des fichiers VBS</a> : re-génére les fichiers de scripts clients à déployer dans les GPO de Active Directory.</div>
<div class="menu"><a href="recup_comptes.php">Rechargement des comptes</a> : recharge tous les comptes utilisateurs depuis Active Directory.</div>
<div class="menu"><a href="recup_salles.php?p=u">Ajout/mise à jour de machines ou de salles</a> : ajoute les nouvelles salles ou machines et met à jour les existantes. Met aussi à jour le fichier des adresses IP collectées pour le ping.</div>
<div class="menu"><a href="recup_salles.php?p=u">Ajout/mise à jour de machines ou de salles</a> : ajoute les nouvelles salles ou machines et met à jour les existantes.<?php if ($mode_ping) { ?> Relance aussi le démon ping sur les adresses IP mises à jour.<?php } ?></div>
<div class="menu"><a href="stop_ping.php">Arrêt ping</a> : stoppe explicitement le démon ping s'il avait été démarré.</div>
<br/>
<div class="menu"><a href="recup_salles.php">Rechargement intégral des machines et des salles</a> <i>(attention : ràz de toutes les machines)</i> : à faire quand les machines ou les salles ont changé de nom par exemple.</div>
<div class="menu"><a href="recup_salles.php">Rechargement intégral des machines et des salles</a> <i>(attention : ràz de toutes les machines)</i> : à faire quand les machines ou les salles ont changé de nom par exemple.<?php if ($mode_ping) { ?> Relance aussi le démon ping sur les adresses IP des connexions en cours.<?php } ?></div>
<p id="msg_archive"><?php echo($msg_archive); ?></p>
<?php
}

View File

@ -6,8 +6,8 @@
# Test arguments
if [[ $# -eq 0 ]]; then
echo 'Erreur de paramètres : le fichier de configuration du ping doit être passé'
echo 'Usage : winlog_start_ping.sh fichier_ping.conf'
echo 'Erreur de paramètre : le fichier de configuration du ping doit être passé'
echo 'Usage : winlog_ping.sh fichier_ping.conf'
exit 1
fi;
# Source de la configuration et tests fichiers

View File

@ -1,11 +1,11 @@
#!/bin/bash
# Usage : winlog_ping.sh fichier_ping.conf
# Usage : winlog_start_ping.sh fichier_ping.conf
# 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 0 ]]; then
echo 'Erreur de paramètres : le fichier de configuration du ping doit être passé'
echo 'Erreur de paramètre : le fichier de configuration du ping doit être passé'
echo 'Usage : winlog_start_ping.sh fichier_ping.conf'
exit 1
fi;
@ -25,8 +25,8 @@ if [ ! -e $fichierOUT ]; then
fi;
# Arrêt des éventuels processus actifs de winlog_ping
for proc in `ps -ej | grep winlog_ping | grep -v grep | cut -d ' ' -f1`
# Arrêt des éventuels processus actifs de winlog_ping.sh
for proc in `pgrep winlog_ping`
do
kill -9 $proc
done

23
admin/ping/winlog_stop_ping.sh Executable file
View File

@ -0,0 +1,23 @@
#!/bin/bash
# Usage : winlog_stop_ping.sh fichier_ping.conf
# Ce script stoppe le shell winlog_ping.sh en arrière plan et rend la main aussitôt.
# Test arguments
if [[ $# -eq 0 ]]; then
echo 'Erreur de paramètre : le fichier de configuration du ping doit être passé'
echo 'Usage : winlog_stop_ping.sh fichier_ping.conf'
exit 1
fi;
# Source de la configuration et tests fichiers
if [ ! -e $1 ]; then
echo 'Erreur : fichier '$1' non trouvé.'
exit 1
fi;
source $1;
# Arrêt des éventuels processus actifs de winlog_ping.sh
for proc in `pgrep winlog_ping`
do
kill -9 $proc
done

View File

@ -179,7 +179,7 @@ ldap_close($ldap_con);
<link rel="stylesheet" media="screen" type="text/css" title="default" href="default.css">
</head>
<body>
<p class="header">WINLOG</p>
<p class="header">WINLOG-R</p>
<h3>Récupération des machines et des salles</h3>
<p>Ce traitement vient de récupérer les machines et les salles depuis le serveur Active Directory.<br/>
<?php

54
admin/stop_ping.php Normal file
View File

@ -0,0 +1,54 @@
<?php
// Formulaire d'arrêt du démon ping
include_once('winlog_admin_conf.php');
include_once('session.php');
$username = Username();
// test profil utilisateur
$profil = Profil($username);
FiltreProfil($profil);
if ($profil < $niveaux[$roles[3]]) {
header('Location: '.$winlog_url);
}
// Fonction d'arrêt du démon de ping
Function Stop_demon_ping() {
global $winlog_ping_conf;
global $winlog_stop_ping;
global $winlog_ping_error;
global $winlog_ping_debug;
$redirect = ' > /dev/null';
if ($winlog_ping_debug) {
$redirect = ' >> '. $winlog_ping_error;
}
$command = $winlog_stop_ping . ' ' . $winlog_ping_conf . $redirect . ' 2>&1';
//echo $command;
exec($command);
};
// Arrêt du démon
Stop_demon_ping();
?>
<!DOCTYPE HTML>
<html lang="fr">
<html lang="fr">
<head>
<title>Winlog</title>
<meta charset="utf-8">
<link rel="stylesheet" media="screen" type="text/css" title="default" href="default.css">
</head>
<body>
<p class="header">WINLOG-R</p>
<h3>Arrêt Ping</h3>
<p>Le démon ping qui tournait éventuellement en arrière-plan vient d'être stoppé.<p/>
<?php
if ($mode_ping) { ?>
<p>Si besoin, le démon ping peut être maintenant <a href="recup_salles.php?p=u">relancé à la demande</a> en récupérant les salles.
<?php }
?>
<p><a href="index.php">Retour menu principal</a></p>
<p class="footer">version <?php echo($winlog_version); ?></p>
</body>
</html>

View File

@ -1,6 +1,6 @@
<?php
// Version
$version = "1.6.0";
$version = "1.6";
// URL administration de Winlog
$winlog_url = "https://winlog.iut-rodez.fr/admin/";
// URL serveur Winlog : URL sur laquelle les requêtes des PC clients arrivent
@ -151,8 +151,9 @@ $fichier_liste_ping = "/var/www/html/admin/ping/liste_ping.txt";
// timeout si pas de réponse au ping en milliseconde
$ping_timeout = 100;
// fichier bash de lancement du démon, doit être éxecutable (ne pas modifier)
// laisser vide pour ne pas activer le démon ping : $winlog_start_ping = "";
$winlog_start_ping = "/var/www/html/admin/ping/winlog_start_ping.sh";
// fichier bash d'arrêt du démon, doit être éxecutable (ne pas modifier)
$winlog_stop_ping = "/var/www/html/admin/ping/winlog_stop_ping.sh";
// fichier bash du démon pinger, doit être éxecutable (ne pas modifier)
$winlog_ping = "/var/www/html/admin/ping/winlog_ping.sh";
// fichier de log