J'utilise Snort pour un système de détection d'intrusion (IDS) en temps réel, mon souhait est de recevoir des notifications système en temps réel chaque fois qu'un nouveau journal est écrit dans le fichier journal. Ainsi, NotifyOSD affichera une notification du journal pour chaque journal écrit. Je comprends en utilisant un NotifyOSD patché Je peux utiliser notify-send "$snort.log"
.
Cependant, cela imprimera toutes les lignes du fichier journal à plusieurs reprises. Je pourrais utiliser rsyslog
ou rsync
et écrire la dernière ligne dans un fichier temporaire, qui serait effacé après l'exécution de chaque commande watch
, et avec watch
delay la sortie de notify-send "$temp.snort.log
. Bien que je pense que cela soit gratuit, en outre, la sortie aurait encore besoin d'être nettoyée.
Existe-t-il un meilleur moyen d'obtenir les notifications IDS en temps réel avec NotifyOSD, que:
#!/bin/bash
watch -n1 notify-send "$temp.snort.log"
truncate -s 0 "$temp.snort.log"
Tu pourrais essayer:
tail -f "$temp.snort.log" | xargs -d '\n' -L1 notify-send --
tail -f
conserve le fichier ouvert et imprime de nouvelles lignes à mesure qu'elles sont ajoutées au fichier. xargs
lit ensuite chaque ligne et exécute notify-send
dessus. Le --
signale la fin des options à notify-send
, de sorte qu'une ligne commençant par -
n'est pas accidentellement considéré comme une option.