From 4cd603edec903fb93ba0a578ecbf5578d072ee20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Bousqui=C3=A9?= Date: Tue, 9 Apr 2019 15:15:34 +0200 Subject: [PATCH] schema base + script bash radius_notify_winlog.hs --- README.md | 2 +- .../wifi/radius_notify_winlog.sh | 62 +++++++++++++++ winlog.sql | 77 +++++++++---------- 3 files changed, 100 insertions(+), 41 deletions(-) create mode 100644 admin/scripts_distants/wifi/radius_notify_winlog.sh diff --git a/README.md b/README.md index 0be3a14..b717057 100644 --- a/README.md +++ b/README.md @@ -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.6 _([Change Log](https://github.com/jbousquie/winlog/wiki/Change-Log))_ +version : 1.7 _([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/)* diff --git a/admin/scripts_distants/wifi/radius_notify_winlog.sh b/admin/scripts_distants/wifi/radius_notify_winlog.sh new file mode 100644 index 0000000..c7b0dc5 --- /dev/null +++ b/admin/scripts_distants/wifi/radius_notify_winlog.sh @@ -0,0 +1,62 @@ +#!/bin/bash +# +# Script de log des connexions Eduroam dans Winlog +# Ce script est programmé dans la crontab à intervalle régulier +# Il copie le fichier /var/log/freeradius/radius.log localement +# Il compare cette copie à la version précédente de la copie pour déterminer le nombre de nouvelles inscrites dans le log depuis le dernier traitement +# Il réduit le fichier de travail à ces nouvelles lignes desquelles il extrait les lignes de connexions réussies +# Il émet une requête POST à Winlog avec les données de connexion extraites + +ficLog=/var/log/freeradius/radius.log +ficCopie=/root/radius.copie.log +ficDerniereCopie=/root/radius.precedent.log +ficTravail=/root/radius.connexions.log +winlogURL=http://winlog.iut.rdz/wifi/index.php + +# copie du fichier de log dans un fichier de travail local +cp $ficLog $ficCopie + +# comparaison du delta entre la copie et la précédente +if [ ! -f $ficDerniereCopie ]; then + touch $ficDerniereCopie +fi +nbLignesCopie=$(wc -l < $ficCopie) +nbLignesPrec=$(wc -l < $ficDerniereCopie) +delta=$(($nbLignesCopie-$nbLignesPrec)) + +# si le log actuel a plus de lignes que la derniere copie (delta > 0), alors on copie les delta dernières lignes dans le fichier de travail +# sinon, le fichier de log a été réinitialisé (logrotate), le fichier de travail devient directement la copie du fichier du log courant entier +if test "$delta" -gt 0; then + tail -n $delta $ficCopie > $ficTravail +else + cp $ficCopie $ficTravail +fi +# dans tous les cas, on copie le fichier de log actuel dans la fichier "derniere copie" +cp $ficCopie $ficDerniereCopie + + +# Tout le traitement se fait maintenant sur le fichier de travail uniquement +# +# Sélection des lignes contenant "Login OK" uniquement +connexionsOK=$(cat $ficTravail | grep 'Login OK' | cut -d ':' -f6) +# Remplacement de tous les espaces par * pour itérer ligne par ligne dans la boucle for (et pas par mot) +connexions=${connexionsOK// /*} + + +for connexion in $connexions; do + # Récupération du username dans les colonnes de la ligne + username=$(echo $connexion | cut -d'*' -f2) + # suppression de tous les caractères à partir du / final + username=${username/\/*} + # suppression du [ initial + username=${username/[} + + # Récupération de la MAC ADDRESS + mac=$(echo $connexion | cut -d'*' -f12) + # suppression du ) final + mac=${mac/)} + + # Envoi de la requête POST à Winlog + postData=agent=EDUROAM\&ip=$mac\&username=$username + wget -qO- --post-data=$postData $winlogURL +done diff --git a/winlog.sql b/winlog.sql index 3fe3cbc..d9fc92e 100644 --- a/winlog.sql +++ b/winlog.sql @@ -3,7 +3,7 @@ -- http://www.phpmyadmin.net -- -- Client : localhost --- Généré le : Jeu 06 Décembre 2018 à 10:51 +-- Généré le : Mar 09 Avril 2019 à 14:35 -- Version du serveur : 5.5.53-0+deb8u1 -- Version de PHP : 5.6.27-0+deb8u1 @@ -25,9 +25,6 @@ SET time_zone = "+00:00"; -- -- Structure de la table `comptes` -- --- Création : Mer 05 Décembre 2018 à 09:45 --- Dernière modification : Mer 05 Décembre 2018 à 09:45 --- CREATE TABLE IF NOT EXISTS `comptes` ( `compte_id` int(11) NOT NULL, @@ -35,17 +32,13 @@ CREATE TABLE IF NOT EXISTS `comptes` ( `prenom` varchar(25) 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 -) ENGINE=MyISAM AUTO_INCREMENT=929 DEFAULT CHARSET=utf8; +) ENGINE=MyISAM AUTO_INCREMENT=935 DEFAULT CHARSET=utf8; -- -------------------------------------------------------- -- -- Structure de la table `connexions` -- --- Création : Ven 25 Novembre 2016 à 12:34 --- Dernière modification : Jeu 06 Décembre 2018 à 09:51 --- Dernière vérification : Mer 31 Octobre 2018 à 10:05 --- CREATE TABLE IF NOT EXISTS `connexions` ( `con_id` bigint(20) NOT NULL, @@ -56,31 +49,25 @@ CREATE TABLE IF NOT EXISTS `connexions` ( `debut_con` timestamp NULL DEFAULT '0000-00-00 00:00:00', `close` tinyint(1) NOT NULL DEFAULT '1', `archivable` tinyint(1) NOT NULL DEFAULT '0' -) ENGINE=MyISAM AUTO_INCREMENT=195776 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=MyISAM AUTO_INCREMENT=239479 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -- -------------------------------------------------------- -- -- Structure de la table `log_admin_connexions` -- --- Création : Jeu 06 Décembre 2018 à 08:18 --- Dernière modification : Jeu 06 Décembre 2018 à 09:49 --- CREATE TABLE IF NOT EXISTS `log_admin_connexions` ( `id_admin_con` int(11) NOT NULL, `username` varchar(50) COLLATE utf8_unicode_ci NOT NULL, `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP -) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='table de logs des connexions à la console d''administration'; +) ENGINE=MyISAM AUTO_INCREMENT=145 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='table de logs des connexions à la console d''administration'; -- -------------------------------------------------------- -- -- Structure de la table `machines` -- --- Création : Jeu 29 Novembre 2018 à 10:27 --- Dernière modification : Jeu 06 Décembre 2018 à 09:50 --- CREATE TABLE IF NOT EXISTS `machines` ( `machine_id` varchar(15) COLLATE utf8_unicode_ci NOT NULL, @@ -105,9 +92,6 @@ CREATE TABLE IF NOT EXISTS `machines` ( -- -- Structure de la table `ping` -- --- Création : Ven 30 Novembre 2018 à 13:33 --- Dernière modification : Jeu 06 Décembre 2018 à 09:51 --- CREATE TABLE IF NOT EXISTS `ping` ( `machine_id` varchar(15) COLLATE utf8_unicode_ci NOT NULL, @@ -119,10 +103,6 @@ CREATE TABLE IF NOT EXISTS `ping` ( -- -- Structure de la table `proxy` -- --- Création : Ven 16 Septembre 2016 à 12:39 --- Dernière modification : Jeu 06 Décembre 2018 à 09:48 --- Dernière vérification : Mer 31 Octobre 2018 à 10:05 --- CREATE TABLE IF NOT EXISTS `proxy` ( `ip` varchar(30) COLLATE utf8_unicode_ci NOT NULL, @@ -137,9 +117,6 @@ CREATE TABLE IF NOT EXISTS `proxy` ( -- -- Structure de la table `salles` -- --- Création : Mer 05 Décembre 2018 à 09:18 --- Dernière modification : Mer 05 Décembre 2018 à 09:18 --- CREATE TABLE IF NOT EXISTS `salles` ( `salle_id` varchar(10) COLLATE utf8_unicode_ci NOT NULL @@ -150,8 +127,6 @@ CREATE TABLE IF NOT EXISTS `salles` ( -- -- Structure de la table `total_connexions` -- --- Création : Lun 11 Décembre 2017 à 09:05 --- CREATE TABLE IF NOT EXISTS `total_connexions` ( `con_id` bigint(20) NOT NULL, @@ -165,11 +140,21 @@ CREATE TABLE IF NOT EXISTS `total_connexions` ( -- -------------------------------------------------------- -- --- Structure de la table `wifi` +-- Structure de la table `total_wifi` -- --- Création : Mar 13 Décembre 2016 à 09:02 --- Dernière modification : Jeu 06 Décembre 2018 à 09:49 --- Dernière vérification : Mer 31 Octobre 2018 à 10:05 + +CREATE TABLE IF NOT EXISTS `total_wifi` ( +`wifi_id` bigint(20) NOT NULL, + `wifi_username` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `wifi_ip` varchar(30) 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 +) ENGINE=MyISAM AUTO_INCREMENT=119759 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- Structure de la table `wifi` -- CREATE TABLE IF NOT EXISTS `wifi` ( @@ -178,8 +163,9 @@ CREATE TABLE IF NOT EXISTS `wifi` ( `wifi_ip` varchar(30) 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, - `close` tinyint(4) NOT NULL DEFAULT '0' -) ENGINE=MyISAM AUTO_INCREMENT=97548 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + `close` tinyint(4) NOT NULL DEFAULT '0', + `archivable` tinyint(1) NOT NULL +) ENGINE=MyISAM AUTO_INCREMENT=72 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -- -- Index pour les tables exportées @@ -227,11 +213,17 @@ ALTER TABLE `salles` ALTER TABLE `total_connexions` ADD PRIMARY KEY (`con_id`), ADD KEY `username` (`username`), ADD KEY `hote` (`hote`), ADD KEY `ip` (`ip`); +-- +-- Index pour la table `total_wifi` +-- +ALTER TABLE `total_wifi` + ADD PRIMARY KEY (`wifi_id`), ADD KEY `wifi_username` (`wifi_username`), ADD KEY `wifi_deb_conn` (`wifi_deb_conn`); + -- -- Index pour la table `wifi` -- ALTER TABLE `wifi` - ADD PRIMARY KEY (`wifi_id`), ADD KEY `wifi_username` (`wifi_username`), ADD KEY `wifi_deb_conn` (`wifi_deb_conn`), ADD KEY `close` (`close`); + ADD PRIMARY KEY (`wifi_id`), ADD UNIQUE KEY `wifi_username_2` (`wifi_username`,`wifi_ip`,`wifi_browser`), ADD KEY `wifi_username` (`wifi_username`), ADD KEY `wifi_deb_conn` (`wifi_deb_conn`), ADD KEY `close` (`close`); -- -- AUTO_INCREMENT pour les tables exportées @@ -241,22 +233,27 @@ ALTER TABLE `wifi` -- AUTO_INCREMENT pour la table `comptes` -- ALTER TABLE `comptes` -MODIFY `compte_id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=929; +MODIFY `compte_id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=935; -- -- AUTO_INCREMENT pour la table `connexions` -- ALTER TABLE `connexions` -MODIFY `con_id` bigint(20) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=195776; +MODIFY `con_id` bigint(20) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=239479; -- -- AUTO_INCREMENT pour la table `log_admin_connexions` -- ALTER TABLE `log_admin_connexions` -MODIFY `id_admin_con` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=2; +MODIFY `id_admin_con` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=145; +-- +-- AUTO_INCREMENT pour la table `total_wifi` +-- +ALTER TABLE `total_wifi` +MODIFY `wifi_id` bigint(20) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=119759; -- -- AUTO_INCREMENT pour la table `wifi` -- ALTER TABLE `wifi` -MODIFY `wifi_id` bigint(20) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=97548; +MODIFY `wifi_id` bigint(20) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=72; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;