Identification connexion entrante
Identification connexion entrante
Bonjour
J'aimerai avoir une alerte (par mail, pushbullet ou autre) quand il y a une connexion sur min Domoticz avec l'adresse IP de la machine qui se connecte
Pour cela, est-il possible de récupérer l'information dans le fichier log des "Incoming connexion" ?
Sinon avez-vous une autre idée ?
D'avance merci
J'aimerai avoir une alerte (par mail, pushbullet ou autre) quand il y a une connexion sur min Domoticz avec l'adresse IP de la machine qui se connecte
Pour cela, est-il possible de récupérer l'information dans le fichier log des "Incoming connexion" ?
Sinon avez-vous une autre idée ?
D'avance merci
Domoticz + Rflink + Xiaomi Gateway +Zigbee2Mqtt + Wemos + Dahua+ Alhau + Monitor:
- gestion vmc / hygrométrie
- pilotage ampli Denon Ceol
- surveillance piscine
- commande thermostat chauffage central
- gestion portail + garage automatique
- gestion vmc / hygrométrie
- pilotage ampli Denon Ceol
- surveillance piscine
- commande thermostat chauffage central
- gestion portail + garage automatique
-
vil1driver
- Messages : 5661
- Inscription : 30 janv. 2015, 11:07
- Localisation : Rennes (35)
Re: Identification connexion entrante
Salut,
A adapter
Lecture logs et action conditionnée
https://easydomoticz.com/forum/viewtopi ... 186#p33186
Sinon il existe fail2ban
A adapter
Lecture logs et action conditionnée
https://easydomoticz.com/forum/viewtopi ... 186#p33186
Sinon il existe fail2ban
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
-
denis_brasseur
- Messages : 898
- Inscription : 24 déc. 2018, 17:05
- Localisation : (26)
Re: Identification connexion entrante
J'avais récupéré cette fonction dans mes fonctions, jamais utilisé parce que je ne voyais pas comment l'utiliser.vil1driver a écrit : 25 mai 2020, 20:35 Salut,
A adapter
Lecture logs et action conditionnée
https://easydomoticz.com/forum/viewtopi ... 186#p33186
Sinon il existe fail2ban
Pas mal, cela me sert déjà...
J'apprend encore des grands, c'est rassurant.
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
-
Chrominator
- Messages : 1042
- Inscription : 19 déc. 2015, 07:29
- Localisation : France
Re: Identification connexion entrante
Pour fail2ban c'est par là : https://www.domoticz.com/wiki/Setup_fail2ban
Un bon frein vaut mieux que deux sparadraps.
Ubuntu 24.04.3 LTS - Domoticz 2025.1 (build 16782)
Pentium G3220T 2.6GHz - 4Go DDR3
RFXtrx433 USB Ver Pro1/1043
Z-Stick GEN5 Version: 1.6-1136-g07ea22bb
Rtl433 RTL-SDR receiver
RFLink Gateway
Zigbee SLZB-06
Ubuntu 24.04.3 LTS - Domoticz 2025.1 (build 16782)
Pentium G3220T 2.6GHz - 4Go DDR3
RFXtrx433 USB Ver Pro1/1043
Z-Stick GEN5 Version: 1.6-1136-g07ea22bb
Rtl433 RTL-SDR receiver
RFLink Gateway
Zigbee SLZB-06
Re: Identification connexion entrante
Bonjour
Merci pour ces infos.
j'ai testé la solution avec le script que j'ai dû adapté un peu en tenant compte de l' évolution de la fonction
/json.htm?type=command¶m=getlog&lastlogtime=LASTLOGTIME&loglevel=LOGLEVEL
comme précisé ici
https://easydomoticz.com/forum/viewtopi ... 3&start=10
Il me fallait utiliser le niveau 2 pour LOGLEVEL pour retrouver mon message
Par contre, je n'ai pas réussi à utiliser LASTLOGTIME
Je pensais qu'en indiquant lastlogtime=300, j'aurais uniquement les logs des 5 dernières minutes, mais cela ne marche pas.
Je récupère toujours les 100 dernières lignes de log
Je voudrais lancer périodiquement le script et traiter uniquement les nouveaux logs pendant cette période .
pouvez-vous m'aider ?
Merci
Merci pour ces infos.
j'ai testé la solution avec le script que j'ai dû adapté un peu en tenant compte de l' évolution de la fonction
/json.htm?type=command¶m=getlog&lastlogtime=LASTLOGTIME&loglevel=LOGLEVEL
comme précisé ici
https://easydomoticz.com/forum/viewtopi ... 3&start=10
Il me fallait utiliser le niveau 2 pour LOGLEVEL pour retrouver mon message
Par contre, je n'ai pas réussi à utiliser LASTLOGTIME
Je pensais qu'en indiquant lastlogtime=300, j'aurais uniquement les logs des 5 dernières minutes, mais cela ne marche pas.
Je récupère toujours les 100 dernières lignes de log
Je voudrais lancer périodiquement le script et traiter uniquement les nouveaux logs pendant cette période .
pouvez-vous m'aider ?
Merci
Domoticz + Rflink + Xiaomi Gateway +Zigbee2Mqtt + Wemos + Dahua+ Alhau + Monitor:
- gestion vmc / hygrométrie
- pilotage ampli Denon Ceol
- surveillance piscine
- commande thermostat chauffage central
- gestion portail + garage automatique
- gestion vmc / hygrométrie
- pilotage ampli Denon Ceol
- surveillance piscine
- commande thermostat chauffage central
- gestion portail + garage automatique
-
denis_brasseur
- Messages : 898
- Inscription : 24 déc. 2018, 17:05
- Localisation : (26)
Re: Identification connexion entrante
Voici la méthode que j'utilise afin de lire les logs et mener les actions nécessaires à mon besoin :
J'ai modifier la fonction lastLogEntry afin de lui passer le paramètre loglevel.
Dans un script de type time, toutes les 5 minutes, je boucle sur les logs.
Je recherche ensuite les valeurs "Incoming connection from" et "Failed authentication attempt".
"Incoming connection from" correspond à une connexion acceptée, "Failed authentication attempt" une connexion refusée.
"Incoming connection from" est visible dans l'onglet Statut (loglevel=2) et "Failed authentication attempt" dans l'onglet Erreur (loglevel=4).
Afin de pouvoir récupérer ces 2 valeurs, j'utilise loglevel=268435455.
Mon script s’exécutant toutes les 5 mn, je teste l'horodatage des messges dans les logs afin de n'exploiter que ceux datant de moins de 300 (5 mn).
Un extrait de mon script
La fonction lastLogEntry modifiée :
La méthode pour boucler sur les logs envoie la valeur loglevel, 268435455 pour avoir Statut et Erreur, 2 pour Statut et 4 pour Erreur uniquement :
Récupération de l'horodatage des logs, et le calcul permettant de déterminer le nombre de seconde d'ancienneté de la ligne en le comparant à l'heure courante :
La boucle complete :
La commande break permet de sortir de la boucle dés que l'horodatage des événements est supérieur à 300 s (5 mn), si plusieurs événements dans la boucle correspondent aux conditions, ils seront tous exploités.
J'ai modifier la fonction lastLogEntry afin de lui passer le paramètre loglevel.
Dans un script de type time, toutes les 5 minutes, je boucle sur les logs.
Je recherche ensuite les valeurs "Incoming connection from" et "Failed authentication attempt".
"Incoming connection from" correspond à une connexion acceptée, "Failed authentication attempt" une connexion refusée.
"Incoming connection from" est visible dans l'onglet Statut (loglevel=2) et "Failed authentication attempt" dans l'onglet Erreur (loglevel=4).
Afin de pouvoir récupérer ces 2 valeurs, j'utilise loglevel=268435455.
Mon script s’exécutant toutes les 5 mn, je teste l'horodatage des messges dans les logs afin de n'exploiter que ceux datant de moins de 300 (5 mn).
Un extrait de mon script
La fonction lastLogEntry modifiée :
Code : Tout sélectionner
-- retourne la table des derniers log (première ligne = dernier log)
function lastLogEntry(loglevel)
local rid = assert(io.popen(curl..'-u '..domoticzUSER..':'..domoticzPSWD..' "'..domoticzURL..'/json.htm? type=command¶m=getlog'..loglevel..'"'))
local list = rid:read('*all')
rid:close()
local tableau = json:decode(list).result
return ReverseTable(tableau)
endCode : Tout sélectionner
for n, line in ipairs(lastLogEntry('&loglevel=268435455')) do
endCode : Tout sélectionner
heure_log = string.sub(line['message'], 1, 19)
y, m, d, H, M, S = heure_log:match("(%d+)-(%d+)-(%d+) (%d+):(%d+):(%d+)")
difference = os.difftime(os.time(), os.time{year=y, month=m, day=d, hour=H, min=M, sec=S})Code : Tout sélectionner
for n, line in ipairs(lastLogEntry('&loglevel=268435455')) do
if line['message'] ~= '' then --pour eviter un message d'erreur si logs vides
heure_log = string.sub(line['message'], 1, 19) --2020-05-29 06:13:19
y, m, d, H, M, S = heure_log:match("(%d+)-(%d+)-(%d+) (%d+):(%d+):(%d+)")
difference = os.difftime(os.time(), os.time{year=y, month=m, day=d, hour=H, min=M, sec=S})
if difference <= 300 then
--2020-05-29 06:13:19.672 Status: Incoming connection from: 192.168.1.117
if string.match(line['message'], "Incoming connection from") then
print('Incoming connection '..heure_log..' il y a '..difference..' s')
--action à mener dans le script
--2020-05-29 15:44:29.440 Error: [web:8060] Failed authentication attempt, ignoring client request (remote address: xx.xxx.xxx.xxx)
elseif string.match(line['message'], "Failed authentication attempt") then
print('Failed authentication attempt '..heure_log..' il y a '..difference..' s')
--action à mener dans le script
end
else
break
end
end
endPi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
Re: Identification connexion entrante
Bonjour
Parfait !
Je me suis inspiré de tes scripts.
J'ai en fait utilisé aussi l'information LastlogTime = XXXXX retournée par un premier appel de la fonction GetLog pour faire un second appel avec cette valeur comme paramètre /json.htm?type=command¶m=getlog&lastlogtime=XXXXX&loglevel=268435455
Cela me permet de récupérer que les derniers logs
Donc pas besoin de rechercher par un boucle sur l'heure du message
Merci pour votre aide
Parfait !
Je me suis inspiré de tes scripts.
J'ai en fait utilisé aussi l'information LastlogTime = XXXXX retournée par un premier appel de la fonction GetLog pour faire un second appel avec cette valeur comme paramètre /json.htm?type=command¶m=getlog&lastlogtime=XXXXX&loglevel=268435455
Cela me permet de récupérer que les derniers logs
Donc pas besoin de rechercher par un boucle sur l'heure du message
Merci pour votre aide
Domoticz + Rflink + Xiaomi Gateway +Zigbee2Mqtt + Wemos + Dahua+ Alhau + Monitor:
- gestion vmc / hygrométrie
- pilotage ampli Denon Ceol
- surveillance piscine
- commande thermostat chauffage central
- gestion portail + garage automatique
- gestion vmc / hygrométrie
- pilotage ampli Denon Ceol
- surveillance piscine
- commande thermostat chauffage central
- gestion portail + garage automatique
-
denis_brasseur
- Messages : 898
- Inscription : 24 déc. 2018, 17:05
- Localisation : (26)
Re: Identification connexion entrante
Effectivement, mais l'utilisation de lastlogtime avec sa dernière valeur ne retourne que le dernier log.
Il est possible tout simplement, en soustrayant 60 à os.time() et de passer cette valeur à lastlogtime d'avoir les logs de la dernière minute, ou des 5 dernières minutes en soustrayant 300.
Il est possible tout simplement, en soustrayant 60 à os.time() et de passer cette valeur à lastlogtime d'avoir les logs de la dernière minute, ou des 5 dernières minutes en soustrayant 300.
Code : Tout sélectionner
LastLogTime = os.time() - 60
for n, line in ipairs(lastLogEntry('&lastlogtime='..LastLogTime..'&loglevel=268435455')) do
endPi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090