schema base + script bash radius_notify_winlog.hs

This commit is contained in:
Jérôme Bousquié 2019-04-09 15:15:34 +02:00
parent 4811f556da
commit 4cd603edec
3 changed files with 100 additions and 41 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) 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. 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/)* *Licence [CeCILL-B](http://www.cecill.info/)*

View File

@ -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

View File

@ -3,7 +3,7 @@
-- http://www.phpmyadmin.net -- http://www.phpmyadmin.net
-- --
-- Client : localhost -- 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 du serveur : 5.5.53-0+deb8u1
-- Version de PHP : 5.6.27-0+deb8u1 -- Version de PHP : 5.6.27-0+deb8u1
@ -25,9 +25,6 @@ SET time_zone = "+00:00";
-- --
-- Structure de la table `comptes` -- 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` ( CREATE TABLE IF NOT EXISTS `comptes` (
`compte_id` int(11) NOT NULL, `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, `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=929 DEFAULT CHARSET=utf8; ) ENGINE=MyISAM AUTO_INCREMENT=935 DEFAULT CHARSET=utf8;
-- -------------------------------------------------------- -- --------------------------------------------------------
-- --
-- Structure de la table `connexions` -- 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` ( CREATE TABLE IF NOT EXISTS `connexions` (
`con_id` bigint(20) NOT NULL, `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', `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=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` -- 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` ( CREATE TABLE IF NOT EXISTS `log_admin_connexions` (
`id_admin_con` int(11) NOT NULL, `id_admin_con` int(11) NOT NULL,
`username` varchar(50) COLLATE utf8_unicode_ci NOT NULL, `username` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP `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` -- 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` ( CREATE TABLE IF NOT EXISTS `machines` (
`machine_id` varchar(15) COLLATE utf8_unicode_ci NOT NULL, `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` -- 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` ( CREATE TABLE IF NOT EXISTS `ping` (
`machine_id` varchar(15) COLLATE utf8_unicode_ci NOT NULL, `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` -- 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` ( CREATE TABLE IF NOT EXISTS `proxy` (
`ip` varchar(30) COLLATE utf8_unicode_ci NOT NULL, `ip` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
@ -137,9 +117,6 @@ CREATE TABLE IF NOT EXISTS `proxy` (
-- --
-- Structure de la table `salles` -- 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` ( CREATE TABLE IF NOT EXISTS `salles` (
`salle_id` varchar(10) COLLATE utf8_unicode_ci NOT NULL `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` -- Structure de la table `total_connexions`
-- --
-- Création : Lun 11 Décembre 2017 à 09:05
--
CREATE TABLE IF NOT EXISTS `total_connexions` ( CREATE TABLE IF NOT EXISTS `total_connexions` (
`con_id` bigint(20) NOT NULL, `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 CREATE TABLE IF NOT EXISTS `total_wifi` (
-- Dernière vérification : Mer 31 Octobre 2018 à 10:05 `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` ( 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_ip` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
`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=97548 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; `archivable` tinyint(1) NOT NULL
) ENGINE=MyISAM AUTO_INCREMENT=72 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
-- --
-- Index pour les tables exportées -- Index pour les tables exportées
@ -227,11 +213,17 @@ ALTER TABLE `salles`
ALTER TABLE `total_connexions` ALTER TABLE `total_connexions`
ADD PRIMARY KEY (`con_id`), ADD KEY `username` (`username`), ADD KEY `hote` (`hote`), ADD KEY `ip` (`ip`); 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` -- Index pour la table `wifi`
-- --
ALTER 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 -- AUTO_INCREMENT pour les tables exportées
@ -241,22 +233,27 @@ 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=929; MODIFY `compte_id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=935;
-- --
-- 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=195776; MODIFY `con_id` bigint(20) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=239479;
-- --
-- AUTO_INCREMENT pour la table `log_admin_connexions` -- AUTO_INCREMENT pour la table `log_admin_connexions`
-- --
ALTER 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` -- AUTO_INCREMENT pour la table `wifi`
-- --
ALTER 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_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 */;